我最近了解到,我可以使用以下带有OR的select语句在多个列中搜索MySQL表:
SELECT * data WHERE TEMP = "3000" OR X ="3000" OR Y="3000";
返回所需的结果,但在表中仅返回约260k行的结果大约需要1.7秒。我还为已搜索的每个列添加了索引。
有没有办法优化此查询?或者是否有另一个更快但返回相同结果?
答案 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语句中的第一个。例如。