mysql索引优化

4 篇文章 0 订阅
2 篇文章 0 订阅

在新建索引和书写sql语句的时候要遵循,myslq的最左前缀匹配原则(会一直从左向右匹配直到遇到范围查询(>、<、between、like)就停止)停止匹配以后的字段就不会再走索引,所以在写sql的时候尽量把“”的where条件从左至右的书写 最后写“>、<、between、like”,在建立索引的时候也要把“”作为where条件的字段放到索引的前面。如:

select * from t_table where a=1 and b=2 and c=3 and d>4  ====> 对应索引就可以是  (a,b,c,d)

注意:select * from t_table where a=1 and b=2 and d>4 and c=3   ====> 对应索引(a,b,c,d) 这个时候c,d的索引是不会走的

在这里 同样是“”的情况下 abc的索引顺序是可以打乱的

select * from t_table where a=1 and b=2 and c=3 and d>4  ====> 对应索引也可以是  (b,c,a,d)


索引列不能参与计算,对于一些函数如:from_unixtime,是会影响到索引的匹配的,导致索引失效,所以要尽量的把计算放倒字段的匹配值上。如:

select * from t_table where from_unixtime(create_time) = ’2016-10-09’  ===》索引就失效了

select * from t_table where create_time = unix_timestamp(’2016-10-09’);  ===》正确技能get


选择字段尽量不重复字段新建索引,就像主键ID永远也不会重复。


对于联表查询,子查询 如果存在order by limit 等语句  可以在 联表,子查询的时候先把需要排序的表和limit的表排序和limit 。


尽量使用组合索引,而不是新建索引,并且大量的新建索引对于数据的更新和增加,磁盘的存储会造成开销,所以根据具体的业务场景,相关的sql,设计相应的索引是很必要的。最好的方式就是定期的排查慢日志把慢sql排查出来然后再结合相应的业务场景设计相应的索引方式。


对于索引的优化不单单的体现在建立索引的方式上,更重要的是结合业务逻辑进行分析,来确定索引的必要性和方式方法,并且在书写sql语句的时候一定要注意性能。

http://blog.csdn.net/u014017080/article/details/52199432 点击打开链接   这是一些建立数据库时的一些小技巧 可以一起看一下

欢迎指正。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__DEBUG__

来杯可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值