【问题标题】:Order by performance problems按性能问题排序
【发布时间】:2011-11-23 16:17:01
【问题描述】:

我的 order by 语句存在索引问题。我有这个查询女巫正在快速运行:

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

我在成员表上有一个复合索引:

kat_index(kat,date);

现在我的应用发生了变化,我添加了这样的查询:

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

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

【问题讨论】:

    标签: mysql optimization sql-order-by


    【解决方案1】:

    你应该有两个索引:

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

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

    【讨论】:

    • @Marco,对简单查询强制使用索引使其运行更慢,而不是更快。
    【解决方案2】:

    你不能用一个索引覆盖两个查询。您还必须在复合索引上形成最左边的前缀以及 ORDER BY 子句。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2012-07-25
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2010-12-21
      • 2021-09-08
      • 2010-09-16
      相关资源
      最近更新 更多