我可以通过在 fld_date 上添加索引来改进“ORDER BY”吗?
SELECT * FROM t1 WHERE fld1='XXX' fld2='XXX' ORDER BY fld_date;
查询在 where 子句中使用了 (fld1,fld2 - 组合索引) 索引。由于 ORDER BY 与索引不完全匹配,如果我添加带有 fld_date 的索引,这是否有助于提高 ORDER BY fld_date 的性能?
答案1
您应该在 (fld1, fld2, fld_date) 上添加索引。请注意,只有当 fld1 和 fld2 在WHERE
子句中设置为精确匹配时,它才会起作用,非精确表达式(如<
或)>
将关闭索引以进行排序。
答案2
研究聚集索引,在某些情况下,它们可以用来提高大型数据集的性能,显然这就是在计算能力非常有限时 SQL 风格的数据库所使用的。
来源:我正在与一位高级开发人员合作,他提到他们将使用索引来避免由于吞吐量限制而必须选择数据库中的实际值。
根据我查过的文档,它们只是“主键”,但它们与以前的主键不同,可能需要进行挖掘才能从中获得任何不明显的性能优势。
更多详细信息请访问:https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
请参阅参考文章中的标题“影响 ORDER BY 优化”。