MYSQL IN或多个条件

时间:2009-10-13 10:53:33

标签: mysql query-optimization where-clause

我有一个简单的查询,它根据字段status返回没有特定值的记录。 让我们说,为了论证,该字段可以具有值1,2,3 ... 10并且我想返回所有没有值3,7和9的记录。以下哪个最好使用?< / p>

选项1。

SELECT `id` FROM `tbl` WHERE (`status` != '3' AND `status` != '7' AND `_status` != '9')

选项2。

SELECT `id` FROM `tbl` WHERE `status` NOT IN ('3','7','9');

谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

我怀疑优化器会将两个查询都减少到同一个东西,如果这是真的,我更喜欢第二个选项,因为它更短,因此更容易解析。

您应该尝试使用真实数据在每个查询上运行EXPLAIN以确认。

答案 1 :(得分:1)

使用EXPLAIN命令优化查询的最佳方法 例如

EXPLAIN SELECT id FROM tbl WHERE status NOT IN('3','7','9'); 并查看执行时间