![](/img/trans.png)
[英]How to design an index/query to avoid filesort in a simple MySQL query?
[英]Is there a way to use the index to avoid a filesort when OR is used in MySQL query?
我有以下查询和以下2个索引,但我仍然得到一个文件排序。 有没有办法进一步优化这个以避免文件排序,或者我只需要忍受它?
查询:
SELECT * FROM table WHERE row1 > '0' OR row2 = '1' ORDER BY id DESC
索引:
ROW1
ROW2,ID
EXPLAIN输出:
使用sort_union(row1,row2_id); 用在哪里; 使用filesort
ORDER BY ROW2,ID或在ID上添加索引。
是的你可以。 只需添加索引(id,row1,row2)。
这个索引可以工作,因为它中的行将被预先排序,而mySQL只需要选择令人满意的行。
而且,sort_union()索引合并对于mySQL来说并不是很好的优化。
回答有点迟,但我想说,使用“或”可能导致这个问题。 您可以尝试使用带有两个不同查询的union。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.