mysql如何利用好左前缀索引调优

  总结起来就一句话:

   1、索引的列越简单越好,或来自于简单的表;

   2、最好将 索引列 放在where 条件中,且越简单的值越要放在左边,如 sex与车型,sex就2个值:男、女,而车型N个,所以就得把sex放在左边。


下面部分为转载,

  2.1在where条件常用的列上加上索引。

  例如:where cat_id=3 and price>100;// 查询第3个栏目,100元以上的商品。

  误区:cat_id 和price上都加索引

  错误:只能用上cat_id或者是price索引,因为都是独立的索引,同时只能用上1个

  2.2 在多列上建立索引后,查询那个列,索引都将会发挥作用。

    误区:在多列索引上,索引发挥作用,需要满足左前缀需求。

  以index(a,b,c)为例:

语句

索引是否发挥作用

where a=3    是,只是用了a列的索引

Where a=3 and b=5 

,使用了a,b

Where a=3 and b=5 and c=4

,使用了abc

Where b=3  or  where c=4

Where a=3 and c=4

a列能发挥索引,c不能

Where a=3 and b>10 and c=7

A能利用,b能利用, C不能利用

同上,where a=3 and b like ‘xxxx%’ and c=7

A能用,B能用,C不能用

为便于理解假设ABC10米长的木板河面宽30.

全值索引是则木板长10,

Like,左前缀及范围查询则木板长6,

 

自己拼接一下,能否过河对岸,就知道索引能否利用上.

如上例中, where a=3 and b>10, and c=7,

A板长10,A列索引发挥作用

A板正常接B, B板索引发挥作用

B板短了,接不到C, C列的索引不发挥作用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值