2011-09-23 65 views
2

我的订单声明存在索引问题。我有这个疑问女巫乳宁快:按性能问题排序

SELECT name from members where kat = 2 order by date DESC; 

我对成员表的复合指数:

kat_index(kat,date); 

现在我aplication已经改变,我添加了一些这样的查询:

SELECT name from members where kat = 2 order by logged_in DESC, status DESC, date DESC; 

现在查询我慢,因为它使用filesort。所以问题是...我应该添加什么类型的索引来满足这两个查询?

回答

4

你应该有两个指标:

(kat, date) 
(kat, logged_in, status, date) 

每个查询都将使用最适合该查询索引。

+0

好:+1。 – Marco

+0

@Marco,强制简单查询的索引使它运行速度更慢**,而不是更快。 – Johan

1

您无法使用一个索引涵盖两个查询。您还必须在组合索引上与ORDER BY子句一起构成最左边的前缀。