使用 OR 时如何优化 MySQL table 中的搜索?

How to optimize searching in a MySQL table when using OR?

我最近了解到,我可以使用以下带 OR 的 select 语句在 MySQL table 中跨多个列进行搜索:

SELECT * data WHERE TEMP = "3000" OR X ="3000" OR Y="3000";

需要 return 的结果,但是 return 中的结果确实需要大约 1.7 秒,而 table 只有约 260k 行。我也已经为每个搜索的列添加了索引。

有没有办法优化这个查询?还是有另一种速度更快但 return 结果相同的方法?

另一种选择是使用 UNION...

SELECT * FROM data WHERE TEMP = "3000"
UNION
SELECT * FROM data WHERE X ="3000"
UNION
SELECT * FROM data WHERE Y="3000";

...然而,提高性能的真正关键首先是索引,其次是查询分析器。通常数据决定哪个更快,因为 TEMP 可能是 Y 的 100 倍,成为“3000”的可能性 - 例如,这应该在您的原始 OR 语句中排在第一位。