当AID是SQL Server中的AID = 10
类型时,AID = '10'
或INT
之间有什么区别?
Select *
from ATable
where AID = '10'
和
Select *
from ATable
where AID = 10
答案 0 :(得分:6)
不同之处在于SQL需要进行转换才能将varchar
常量与列的类型进行比较。
如果您显示第一个查询的执行计划,您将看到如下内容:
CONVERT_IMPLICIT(int, [@1], 0)
修改强>
在上述情况下,常量的转换只会对性能产生很小的影响。但是,如果转换是在列上完成的(而不是常量),则可能导致扫描更严重的后果。
根据Remus的回答,您可以查看转换优先顺序here