mysql query 优化_MySQL性能调优(五)Query优化--索引优化

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

所以我们需要合理的建立索引。

索引建立的重要几点:

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

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

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

像某些状态值,每个重复的值都对应着很多条数据,所以存储引擎查找的时候会进行多次的IO操作。

即使创建了这样的索引,MySQL的Query Optimizer也不会选择使用

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

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

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

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

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

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

6、合理使用前缀索引

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

建立前缀索引的命令:

alter table person add index index_name(name(3));

7189d9c5bd74

建立前缀索引

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

(1)、MyISAM存储引擎索引键长度总和不能超过1000字节

(2)、BLOB和Text类型类型的列只能创建前缀索引

(3)、MySQL不支持函数索引

(4)、使用不等于查询条件是,无法使用索引

(5)、过滤字段使用了函数运算后,无法使用索引

(6)、join语句中join条件不一致时,无法使用索引

(7)、使用like操作的时候,如果条件以通配符("%adc..")开始,无法使用索引

(8)、使用非等值查询的时候,无法使用HASH索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值