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

问题描述:

我最近才知道,我可以使用下面的SELECT语句或跨多个列的MySQL表进行搜索:如何在使用OR时优化在MySQL表中的搜索?

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

它返回所需的结果,但它确实需要大约1.7秒至返回的结果只有〜260k行的表格。我也已经为每个搜索的列添加了索引。

有没有办法来优化这个查询?还是有另一个更快,但返回相同的结果?

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

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

...但是真正关键是提高性能指标,首先和第二查询分析器。通常情况下,数据决定哪一个更快,因为TEMP可能比Y是“3000”的可能性低一百倍 - 因此,例如应该首先在您的原始OR语句中。

+0

嗯,我得到一个语法错误'附近的数据,TEMP =“3000”'。但是我明白了关于查询结构的观点。对于此查询,TEMP列可能会返回3000结果。 编辑:请将'from'添加到答案中。结果是0.05秒。我相信这可能是我能得到的最好的。 –

+1

@ AhmedAl-haddad很抱歉 - 没有经过测试,我错过了FROM关键字! – Barry

+0

我想验证一下,如果我从'TEMP = 3000'到'TEMP> 3000'或'TEMP