如何在使用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语句中。
嗯,我得到一个语法错误'附近的数据,TEMP =“3000”'。但是我明白了关于查询结构的观点。对于此查询,TEMP列可能会返回3000结果。 编辑:请将'from'添加到答案中。结果是0.05秒。我相信这可能是我能得到的最好的。 –
@ AhmedAl-haddad很抱歉 - 没有经过测试,我错过了FROM关键字! – Barry
我想验证一下,如果我从'TEMP = 3000'到'TEMP> 3000'或'TEMP