使用等号和IN运算符具有相同的值时,SQL引擎有何不同?执行时间是否会改变?

张锋 2年前 访问:514 评论:0 关注:0

第一个使用等式检查操作符

WHERE column_value = 'All'

第二个使用OR运算符和单值

WHERE column_value IN ('All')

如果只有一个值,SQL引擎会将IN更改为=吗?

MySQL和PostgreSQL中是否存在相同的差异?

对于单个IN子句,没有区别。下面是使用EMPS表的演示..

select * from emps where empid in (1)
select * from emps where empid=1

执行计划中第一个查询的谓词:

[PerformanceV3].[dbo].[Emps].[empID]=CONVERT_IMPLICIT(int,[@1],0)
执行计划中第二个查询的谓词:

[PerformanceV3].[dbo].[Emps].[empID]=CONVERT_IMPLICIT(int,[@1],0)

它在两个引擎上没有任何区别(对于大多数数据库,包括SQL Server,Oracle等,它都是相同的)。两个引擎都会将IN转换为=

评论

还没有人评论 ~

❤❤❤❤❤❤
心情
此图名叫《暗淡蓝点》
1990年2月14日,由旅行者1号拍摄,
蓝色的点就是地球
或许你看不清,因为地球在宇宙中太小了。