我知道这是一个非常基本的问题,我想我知道答案......但我想证实.
这些查询真的相同吗?
SELECT * FROM FOO WHERE BAR LIKE 'X' SELECT * FROM FOO WHERE BAR ='X'
也许在使用没有外卡的情况下会有性能开销?
我有一个可选择使用LIKE和外卡的应用程序.SP目前做类似的并附加外卡 - 我想只是更新查询使用,但让应用程序根据需要附加外卡.
正如@ocdecio所说,如果优化器足够智能,那么应该没有区别,但是如果你想确定幕后发生的事情,你应该比较两个查询的执行计划.
Matt Whitfield的原始答案来自这里
=
和之间有区别LIKE
.使用时执行字符串比较时LIKE
,模式字符串中的所有字符都很重要.这包括前导或尾随空格.
所以,如果你有一列,它是char
或nchar
,而不是nvarchar
或者varchar
,会有不同的结果,由于尾随空格.
重现此行为的小示例:
CREATE TABLE #temp (nam [varchar](MAX)) INSERT INTO [#temp] ([nam]) VALUES ('hello') INSERT INTO [#temp] ([nam]) VALUES ('hello ') SELECT * FROM #temp WHERE [nam] = 'hello ' SELECT * FROM #temp WHERE [nam] LIKE 'hello '
任何好的优化器都会将第一个表达式减少到第二个表达式.