SQL WHERE NOT...IN 与 WHERE ... NOT IN

Posted

技术标签:

【中文标题】SQL WHERE NOT...IN 与 WHERE ... NOT IN【英文标题】:SQL WHERE NOT...IN vs WHERE ... NOT IN 【发布时间】:2016-07-03 19:19:30 【问题描述】:

以下两个语句、语法、性能、风格或其他方面是否有任何区别或最佳实践?

SELECT TitleOfCourtesy, FirstName, LastName
FROM Employees
WHERE NOT TitleOfCourtesy IN ('Ms.','Mrs.');



SELECT TitleOfCourtesy, FirstName, LastName
FROM Employees
WHERE TitleOfCourtesy NOT IN ('Ms.','Mrs.');

【问题讨论】:

我很确定两者的底层查询执行是相同的。这只是一个偏好问题。就个人而言,WHERE 列 NOT IN 听起来更合适。 【参考方案1】:

使用Where... NOT IN 是我遇到最多的一种,就行业而言,它是首选,以使不习惯看到Where NOT ... IN 的其他人更容易阅读该声明。

【讨论】:

【参考方案2】:

使用“IN”,因为它很可能使 DBMS 使用相应列上的索引。

“NOT IN”理论上也可以转换为索引使用,但以一种更复杂的方式,DBMS 可能不会“花费开销时间”使用。

【讨论】:

以上是关于SQL WHERE NOT...IN 与 WHERE ... NOT IN的主要内容,如果未能解决你的问题,请参考以下文章

sql中where 之后怎么加if条件判断

在sql的where条件下怎么加判断语句?

关于sql语句添加where条件问题,用java语句

sql中where 之后怎么加if条件判断

sql where后面多个条件是或者的关系怎么写?

sql语句where条件查询