mysql索引经验

1、创建索引,要考虑列的选择性高的列,以及where条件后面列字段的使用频率,通常使用where条件使用频率特别高的一两列作为多列索引的最左列字段。
(列的选择性:某列的所有不同值的总数量/该列所有行总数量
sql示例name列的选择性:select count(distinct(name))/count(0) from user
)
2、尽量使用包含较多列的多列索引,来避免创建多个有交叉重复的列比较少的多列索引。但是如果某多列索引的列很多,就会出现:查询中没用到多列索引中的某列,而这个列又恰在索引列的左边,这样就用不了这个索引,可以考虑用in的技巧去优化查询,比如索引的最左列为sex字段,但是我们的查询不用sex,我们可以写 in (’m’,’f’)来达到使用该列作为选择条件的目的,这样我们就能用这个多列索引了。
(查询不能使用在范围查询右边的索引列,而in严格意义上说也是范围查询,不过mysq查询优化器会把它进行各种等于情况的组合,所以不算范围查询。比如 sex in(’m’,’f’)会组合成 sex = ‘m’union sex = ‘f’ 的情况)
3、尽量把范围排序放在多列索引的最右边。另外查询时候考虑能否用in替换范围查询,这样就可以用到更多的索引列。
(范围查询,eg : < ,> ,between and)

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值