SQL where where field in where field = with multiple ors?

fro*_*die 15 sql syntax

哪些在性能方面更好用?......关于可读性/可理解性?......关于公认的标准?

SELECT *
FROM Wherever
WHERE Greeting IN ('hello', 'hi', 'hey')
Run Code Online (Sandbox Code Playgroud)

要么

SELECT *
FROM Wherever
WHERE Greeting = 'hello' 
   OR Greeting = 'hi'
   OR Greeting = 'hey'
Run Code Online (Sandbox Code Playgroud)

对我来说,第一个似乎更直观/清晰,但我不确定公认的标准和性能.

Mik*_*cic 19

它更具可读性,更普遍接受:

SELECT *
FROM Wherever
WHERE Greeting in ('hello', 'hi', 'hey')
Run Code Online (Sandbox Code Playgroud)

所有现代SQL服务器都会优化您的查询,因此它们很可能被更改为在服务器上运行的相同代码,因此性能差异可以忽略不计或不存在.

编辑:

显然,该in选项更快,因为它评估为二进制查找,而倍数=只是单独评估每个语句.


Qua*_*noi 5

所有主要的发动机(MySQLPostgreSQLOracleSQL Server)将优化它完全相同的计划。