使用多列上的单个值优化WHERE

时间:2017-12-18 16:42:46

标签: mysql optimization

我有一个MySQL表,我试图在一对列中搜索单个值。这是一张相当大的桌子,所以我希望搜索时间尽可能快。

为了便于理解,我简化了下表

SELECT * FROM clients WHERE name=? OR sirname=?

VS

SELECT * FROM clients WHERE ? IN (name, sirname)

名称和sirname上的索引

解析前者使用索引,但不使用后者

这是准确的,还是在EXPLAIN无法捕获的引擎盖下进行了一些优化?

Checking multiple columns for one value密切相关,但由于线索的年龄,无法在那里讨论。

1 个答案:

答案 0 :(得分:0)

因为MySQL通常在查询中为每个表引用使用一个索引,所以您可能必须这样做:

SELECT * FROM clients WHERE name=?
UNION
SELECT * FROM clients WHERE sirname=?

为了索引选择,这将被视为两个表引用。在每种情况下都将使用适当的索引。

相关问题