mysql 组合字段排序 创建组合索引 顺序问题

mysql 排序字段有多个时,创建的组合索引 只有在排序字段顺序相同时才能起到作用。

例如: select id from table order by field1 , field2

创建索引 alter table add index  `I_TABLE_ORDER` (`field1`,`field2`) USING BTREE;

会发现 如果field1和field2 排序方式不一致(一个正序,一个倒序时)会导致索引失效:

    select id from table order by field1 desc, field2 asc --索引没有被使用

    select id from table order by field1 asc, field2 desc --索引没有被使用

    select id from table order by field1 , field2 --索引被使用

所以在设计数据库时可以根据实际业务,将要进行排序的字段属性值整理成相同顺序,如果业务需要多种排序方式,可以不用考虑这一点。

你可能感兴趣的:(mysql 组合字段排序 创建组合索引 顺序问题)