摘要: 1.冗余和重复索引 mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能。重复索引是指的在相同的列上按照相同的顺序创建的相同类型的索引,应该避免这样创建重复所以,发现以后也应该立即删除。但,在相同的列 阅读全文
posted @ 2016-01-28 18:04 xiaoboluo768 阅读(5089) 评论(0) 推荐(0) 编辑
摘要: myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其他值和第一个值进行比较得到相同前缀的字节数(长度)和剩余的不同后缀部分(即把相同部分去掉),把这部分 阅读全文
posted @ 2016-01-28 17:14 xiaoboluo768 阅读(1857) 评论(0) 推荐(0) 编辑
摘要: mysql有两种方式可以生成有序的结果,通过排序操作或者按照索引顺序扫描,如果explain的type列的值为index,则说明mysql使用了索引扫描来做排序(不要和extra列的Using index搞混了,那个是使用了覆盖索引查询)。扫描索引本身是很快的,因为只需要从一条索引记录移动到紧接着的 阅读全文
posted @ 2016-01-28 17:04 xiaoboluo768 阅读(5213) 评论(0) 推荐(0) 编辑
摘要: 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(不是数据结构,而是存储结构),具体细节依赖于其实现方式,但innodb的聚簇索引实际上是在同一个结构中保存了btree索引和数据行。 当表有索引时,它的数据行实际上存放在索引的叶子页中,属于聚簇表示数据行和相邻的键值紧凑地存储在一起,因为无法同 阅读全文
posted @ 2016-01-28 11:48 xiaoboluo768 阅读(11197) 评论(4) 推荐(1) 编辑