MySQL,Short WHERE查询

时间:2011-01-28 17:41:24

标签: mysql

这是我的示例查询。

SELECT * FROM `table` WHERE `id` = '1' OR `id` = '8' OR `id` = '12'

WHERE部分有更快的方法吗?

3 个答案:

答案 0 :(得分:5)

您可以使用IN子句:

SELECT * 
  FROM `table` 
 WHERE `id` IN ('1', '8','12')

由于查询优化器会将此查询转换为与OR序列非常相似的执行计划,因此它不会真正产生性能差异。这是关于美学和/或更少的打字:)

答案 1 :(得分:3)

不确定它是否运行得更快,但它可能读得更干净:

SELECT * ... WHERE ID in ('1', '8', '12' )

答案 2 :(得分:1)

要检查同一字段的where子句中的多个潜在值,您需要使用IN

在您的示例中,您将使用:

SELECT *
FROM `table`
WHERE `id` IN (1, 8, 12)

此功能对于使用子查询也很有用,例如:

SELECT *
FROM `table`
WHERE `id` IN (
    SELECT `id`
    FROM `table2`
)