Mysql 索引使用技巧

2016-09-14 15:34:43   数据库

 

声明

文章内容出自《高性能Mysql第三版》

技巧1

如果字段经常出现在查询条件中,但选择性又比较低(比如性别).我们创建的组合索引中却有包含了此字段。这是我们可以在where条件中使用and 字段 in() 来让mysql选择该索引,这样写并不会过滤掉任何行。但是会让查询选择该索引,但是得注意得是,in的列表不能太长

技巧2

在where条件中避免使用多个in() ,因为没额外增加一个in条件,优化器需要做的组合就将已指数形式增加,最终可能会极大地降低查询性能;如 where color in('blue','red') and sex in('男','女') and age in(16,17,18,19) .... 那么就有224种可能

技巧3

我们在创建组合索引时,尽量将可变的条件字段放到最后。 因为条件字段会影响后面的索引无法使用

技巧4

避免使用多个范围条件

技巧5

文件排序在小数据是非常快,但是在数据量大后性能会很差。对于那些选择性非常低的列,可以增加一次额特殊的索引来排序,例如下面SQL:

select name from profiles where sex='男' order by rating limit 10;

此时创建(sex,rating)索引可以提高速度