mysql 性能索引篇

来源:互联网 发布:淘宝店铺轮播图片尺寸 编辑:程序博客网 时间:2024/06/09 23:34

一般情况下索引类型指的是B-Tree索引。

索引存储在引擎层,所以每个引擎实现不一样,有相同点和不同。

B-Tree通常意味着所有的值都是按顺序存储的,索引排序是根据建表时指定索引的顺序来的。

B-Tree索引适用全键值,键值范围,键前缀查找:

全值匹配:配备所有索引列;

匹配最左前缀:匹配索引第一列;

匹配列前缀:匹配某一列值得开头部分;

匹配范围值:设定查找值得范围;

精确匹配某一列,范围匹配另一列;

只访问索引的查询;

B-Tree的限制:

必须按照索引最左列开始查找;

不能跳过索引中的列;

如果查询中某列使用范围查询,其右边所有列都无法使用索引优化查找

innodb 支持“自适应哈希索引”,如果哪个索引使用频繁,innodb会在B-Tree基础上建立哈希索引,用户无法控制,但可以关闭;

三种加密函数crc32最简单,最快的哈希函数,FNV64 比crc32快,而且是64位可以以插件形式加入mysql,sha1(),md5()是强加密函数,计算出的哈希值很长,最大消除冲突;

高效的引用索引:

索引不能是表达式的一部分,也不能是函数的参数,养成使索引单独放在符号的一侧;

有时候需要索引很长的字符列,可以索引开始的部分字符;

聚蔟索引:聚蔟索引最大限度的提高了I/O密集型应用的性能,更新聚蔟索引列的代价很高;,插入时尽可能按主键顺序插入,innodb_autoinc_lock_mode锁的性能配置;

覆盖索引:如果一个索引包含所有的需要查询的字段值,就是覆盖索引

















0 0
原创粉丝点击