如何优化JOIN ON LIKE'%'+ name +'%'

时间:2010-11-08 18:58:31

标签: sql sql-server tsql

我的查询如下:

SELECT * 
  FROM dbo.TestTable TT
  JOIN dbo.fnListParseAndSplit('test,tt,zz,er,ts',',') L ON TT.Name like '%' + L.ListMember + '%'

我的问题是,在执行计划中,我总是在加入时获得两种情况的索引搜索:

  1. T.Name喜欢'%'+ L.ListMember +'%'

  2. T.Name喜欢L.ListMember +'%'。

  3. 我认为他们完全不同,当联接就像'%'+ L.ListMember +'%'时,我应该得到一个索引扫描。 我是否在执行计划上出错了?或者SQL Server 2008非常智能,它可以优化我的查询?

    我附上了执行计划。你知道我为什么要在TestTabe Name列上找到索引吗? name列有一个唯一的索引...但在这种情况下,我希望扫描而不是搜索。

    http://softrun.ro/executionplan.png

1 个答案:

答案 0 :(得分:1)

索引搜索与加入的第一部分相关,如果你查看发布的计划,你会看到表扫描你的解析函数的输出。