美文网首页
MySQL性能调优(五)Query优化--索引优化

MySQL性能调优(五)Query优化--索引优化

作者: chanyi | 来源:发表于2020-03-27 22:15 被阅读0次

    更加前面的文章可以知道,索引可以大幅提高查询和排序(排序字段为索引字段)的效率。但是如果索引建立的不合适,可能会占用更多的存储和降低数据更新的速度。
    所以我们需要合理的建立索引。
    索引建立的重要几点:

    1、频繁作为查询条件的字段应该创建索引

    通过索引提高效率,这个没的说

    2、唯一性太差的字段不适合单独作为索引

    像某些状态值,每个重复的值都对应着很多条数据,所以存储引擎查找的时候会进行多次的IO操作。
    即使创建了这样的索引,MySQL的Query Optimizer也不会选择使用

    3、更新频繁的字段不适合做索引

    频繁的更新索引字段,不仅要更新数据表数据,还要更新索引表的数据,这个过程带来的IO访问量过大

    4、不会出现在where语句中的字段不要创建索引

    很明显,不需要查找的字段就不用建立索引

    5、合理的选择单列索引和组合索引

    当where子句中的查询条件还有多个字段的时候,通过这个多个字段共同组成的组合索引的查询效率肯定比只用过滤条件中的某个字段建立索引快的多

    6、合理使用前缀索引

    前缀索引就是对某个字段的前几位建立一个索引,而不是把整个字段建立一个索引。这样可以减少索引占用的存储空间和提高索引的访问效率
    建立前缀索引的命令:

    alter table person add index index_name(name(3));
    
    建立前缀索引

    7、注意使用索引时的一些限制

    (1)、MyISAM存储引擎索引键长度总和不能超过1000字节
    (2)、BLOB和Text类型类型的列只能创建前缀索引
    (3)、MySQL不支持函数索引
    (4)、使用不等于查询条件是,无法使用索引
    (5)、过滤字段使用了函数运算后,无法使用索引
    (6)、join语句中join条件不一致时,无法使用索引
    (7)、使用like操作的时候,如果条件以通配符("%adc..")开始,无法使用索引
    (8)、使用非等值查询的时候,无法使用HASH索引

    相关文章

      网友评论

          本文标题:MySQL性能调优(五)Query优化--索引优化

          本文链接:https://www.haomeiwen.com/subject/qaowyhtx.html