使用group by type_id order by null 提高分组查询效率, group by type_id 之后默认要排序, 可以使用 group by type_id order by null 禁止分组后默认排序
select*from test groupbytypeorderbynull;
优化order by 排序查询
where 条件和 order by 使用相同的索引
order by 的顺序和索引顺序相同
order by 的字段都是升序或者降序
#key_par1,key_part2 是联合索引里的两个字段,#并且key_part1, key_part2 的顺序和联合索引顺序一致, 全部升序select*from test orderby key_part1 ,key part2;#where 条件使用了联合索引中的最左一列, order by 使用了从最左一列开始排序, 并且全部使用了降序, where 和 order by 使用相同索引select*from test where key_part1 = some_where orderby key_part1 desc, key_part2 desc# select 查询字段和索引覆盖字段相同无需回表查询select key_part1, key_part2 from test where key_part1 = some_where and key_part = some_where orderby key_part1 desc, key_part2 desc
order by下列情形不能使用索引
# 排序字段升序降序混用select*from test where key_part1 = some_where orderby key_part1 asc, key_part2 desc# where 和 order by 使用不同的索引select*from test where key1 = some_where orderby key2
# order by 使用了两个索引select*from test orderby key1, key2
or 条件查询使用索引
# or 条件两侧必须是两个独立的索引, or 不能使用复合索引select*from test where key1 = some_where or key2 = some_where;
强制使用索引
select*from test useindex(id_type)where id >0;select*from test ignoreindex(primary)where id >0;select*from test forceindex(id_type)where id >0;