1

我有一个简单的查询,它根据status没有特定值的字段返回记录。假设为了参数,该字段可以具有值 1、2、3...10,并且我想返回所有不具有值 3、7 和 9 的记录。以下哪个最好使用?

选项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

2 回答 2

4

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

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

于 2009-10-13T10:55:33.873 回答
1

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

解释id从WHERE NOT IN ('3','7','9'); 并查看执行时间tblstatus

于 2009-10-14T04:06:45.707 回答