他是按照索引的字段,第一个字段排序,相等的话,则看第二个字段比较大小。 所以如果查询条件跳过第一个字段,直接查询第二、第三,或者是第三字段的话,那么这个是无序的,自然用不了索引。
则 explain 后的执行情况是:
mysql 的索引最左原则就很清晰了。索引多个字段,会按照字段顺序依次比较大小建立索引,如果跳过这个顺序的话,则索引失效。 前提是没有其他索引进行影响
来试试看SELECT
* form TABLE
WHERE
id LIKE '%x%'
OR id LIKE '%y%'
ORDER BY
(
(
CASE
WHEN id LIKE '%x%' THEN
2
ELSE
0
END
) + (
CASE
WHEN id LIKE '%y%' THEN
1
ELSE
0
END
)
) ASC
MySQL的排序,使用order by来实现。order by id asc,表示用id升序排列
order by id desc,表示用id降序排列
当需要用多个字段排序时,order by cdate desc,id asc,表示先用cdate降序排列,cdate相同的再用id升序排列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)