2009-10-13 67 views
1

我有一个简单的查询是基于字段status返回记录没有一定的值。 可以说,出于理由,该字段可以具有值1,2,3 ... 10,并且我想要返回所有没有值3,7和9的记录。以下哪个最适合使用?MYSQL IN或多个条件

选项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'); 

感谢您帮助。

回答

4

我怀疑优化程序会减少对同一事物的两个查询,如果这是真的,我更喜欢第二个选项,因为它更短,因此更容易解析。

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

1

最佳方式使用explain命令 实施例

到优化查询

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