赞
踩
索引的设计原则?
创建索引需要注意什么?
创建索引的原则?
什么是前缀索引?
前缀索引就是取某个列的前几个字符建立索引,语法如下:
#给 user 表 hobby 字段建立前缀为 prefix_length 的 index_hobby 索引
ALTER TABLE table ADD index index_hobby(hobby(prefix_length));
前缀索引的难点在于截取前缀的长度,我们可以通过一下语法来获取合适的长度:
#先计算 hobby 全列的区分度
SELECT COUNT(DISTINCT hobby) / COUNT(*) FROM user;
#再计算 hobby 前缀的区分度,计算出区分度和全列最相近那个值,就是我们想要的值。
SELECT COUNT(DISTINCT LEFT(hobby, 5)) / COUNT(*) FROM user;
为什么要使用前缀索引?
如果当某个字段很长,而且查询又很频繁,如果使用全字段索引的话,就会很占空间,这个时候就可以使用前缀索引,有效的缩小了索引文件的大小,可以让一页存放更多的索引,从而提高了查询速度。
什么是最左前缀原则?
B-Tree 和 B+Tree 的区别?
MySQL为什么使用B+Tree 做索引数据结构而不用B-Tree?
Hash 和 B+Tree 的区别?
非聚集索引一定会回表查询吗?
不一定,如果查询返回的字段全部命中了索引,也就是覆盖索引,这个时候就无需回表查询。
什么是索引下推?
索引下推:Index Condition Pushdown,简称ICP,通过把索引过滤条件下推到存储引擎,来减少 MySQL 存储引擎访问基表的次数和 MySQL 服务层访问存储引擎的次数,而在传统的查询过程中,MySQL会先使用索引定位到符合条件的数据记录,然后根据过滤条件进行数据过滤,这种方式比较低效,因为它需要读取很多不符合条件的数据记录,而索引下推的原理是,在使用索引定位到复合记录的条件时候,将过滤条件下推到存储引擎级进行处理,存储引擎可以利用索引的顺序性和范围性,直接在索引上过滤,减少不必要的数据读取,这样可以大大提高查询效率。
持续更新ing。。。
如有不正确的地方请各位指出纠正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。