我的查询如下:
SELECT *
FROM dbo.TestTable TT
JOIN dbo.fnListParseAndSplit('test,tt,zz,er,ts',',') L ON TT.Name like '%' + L.ListMember + '%'
我的问题是,在执行计划中,我总是在加入时获得两种情况的索引搜索:
T.Name喜欢'%'+ L.ListMember +'%'
T.Name喜欢L.ListMember +'%'。
我认为他们完全不同,当联接就像'%'+ L.ListMember +'%'时,我应该得到一个索引扫描。 我是否在执行计划上出错了?或者SQL Server 2008非常智能,它可以优化我的查询?
我附上了执行计划。你知道我为什么要在TestTabe Name列上找到索引吗? name列有一个唯一的索引...但在这种情况下,我希望扫描而不是搜索。
答案 0 :(得分:1)
索引搜索与加入的第一部分相关,如果你查看发布的计划,你会看到表扫描你的解析函数的输出。