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

时间:2016-05-11 13:30:21

标签: mysql search search-engine

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

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

返回所需的结果,但在表中仅返回约260k行的结果大约需要1.7秒。我还为已搜索的每个列添加了索引。

有没有办法优化此查询?或者是否有另一个更快但返回相同结果?

1 个答案:

答案 0 :(得分:1)

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

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

...然而,提高性能的真正关键是首先是索引,然后是查询分析器。通常,数据确定哪个更快,因为TEM可能是Y的可能性的百分之一。" 3000" - 所以这应该是你原来的OR语句中的第一个。例如。