数据库优化之复合索引不起作用的原因

数据库优化之复合索引不起作用的原因

1,情景描述:最近在做数据统计这一块,有一个功能然后使用起来觉得非常卡,然后就开始找所在原因。
2,查找原因

1,把sql语句打印出来放到mysql工具中执行,发现了有一条语句执行的非常慢,目标锁定此sql
2,查找关于如何优化sql的相关资料,基本上可确定为索引问题
3,查看表字段,表中已设复合索引,但为何复合索引没起到作用
4,后来查资料得知:原来在复合索引中只有最左侧会起到作用

3,解决方案:把该字段放在该复合索引的最左侧,或者另加一个索引。
4,复合索引的建立原则:

1,如果你很可能仅对一个列多次执行搜索,则该列应该是复合索引中的第一列。如果您很可能对一个两列索引中的两个列执行单独的搜索,则应该创建另一个仅包含第二列的索引。
2,包含多个列的主键始终会自动以复合索引的形式创建索引,其列的顺序是它们在表定义中出现的顺序,而不是在主键定义中指定的顺序。在考虑将来通过主键执行的搜索,确定哪一列应该排在最前面。
,3,请注意,创建复合索引应当包含少数几个列,并且这些列经常在select查询里使用。在复合索引里包含太多的列不仅不会给带来太多好处。而且由于使用相当多的内存来存储复合索引的列的值,其后果是内存溢出和性能降低。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值