适用于group-by plus plus order-by的索引

时间:2013-01-16 21:00:51

标签: mysql indexing group-by sql-order-by

我有使用order-by group-by

的查询
select count(*),filed2
from table1 where field1>x group by filed2 order by  count(*) desc

此查询的最佳索引是什么 sholud我索引filed1,field2 seprate还是一起?

1 个答案:

答案 0 :(得分:-1)

您应该使用两个不同的订单

创建包含两列的索引
ALTER TABLE table1 ADD INDEX field1_field2_ndx (field1,field2);
ALTER TABLE table1 ADD INDEX field2_field1_ndx (field2,field1);

您不应创建单个索引,因为使用两列创建索引将导致查询仅通过索引来满足查询。它永远不需要触摸桌子。

即使你制作了单独的索引,查询优化器也会选择两列索引。

既然您有两个索引,只需信任查询优化器即可选择正确的索引。根据查询,EXPLAIN计划将选择field2_field1_ndx索引。