1、ORDER BY子句后的列递次要与组合索引的列递次一致,且一切排序列的排序方向(正序/倒序)需一致
2、所查询的字段值须要包含在索引列中,及满足掩盖索引
引荐课程:MySQL教程。
经由过程例子来具体分析
在user_test表上建立一个组合索引
ALTER TABLE user_test ADD INDEX index_user(user_name , city , age);
能够运用到索引排序的案例
SELECT user_name, city, age FROM user_test ORDER BY user_name; SELECT user_name, city, age FROM user_test ORDER BY user_name, city; SELECT user_name, city, age FROM user_test ORDER BY user_name DESC, city DESC; SELECT user_name, city, age FROM user_test WHERE user_name = 'feinik' ORDER BY city;
注:第4条sql语句比较特别一点,假如where查询前提为索引列的第一列,且为常量前提,那末也能够运用到索引。
没法运用索引排序的案例
sex不在索引列中
SELECT user_name, city, age FROM user_test ORDER BY user_name, sex;
排序列的方向不一致
SELECT user_name, city, age FROM user_test ORDER BY user_name ASC, city DESC;
所要查询的字段列sex没有包含在索引列中
SELECT user_name, city, age, sex FROM user_test ORDER BY user_name;
where查询前提后的user_name为局限查询,所以没法运用到索引的其他列
SELECT user_name, city, age FROM user_test WHERE user_name LIKE 'feinik%' ORDER BY city;
以上就是mysql怎样运用索引?的细致内容,更多请关注ki4网别的相干文章!