代码之家  ›  专栏  ›  技术社区  ›  SQL_M

sargable查询与函数,SQL Server

  •  0
  • SQL_M  · 技术社区  · 6 年前

    我一直认为使用 LIKE 'Z%' 在一个 WHERE 子句是可分析的,而使用 LEFT (ColA, 1) = 'Z' 不是。

    所以我做了一个小测试。

    CREATE TABLE #Person (ID INT IDENTITY, LastName VARCHAR (50))
    CREATE CLUSTERED INDEX i_PersonID ON #Person (ID)
    GO
    
    INSERT INTO #Person 
    VALUES ('Peters'), ('Michaels'), ('Richarson'), ('Stevens'),
           ('Wade'), ('Zachery')
    GO 10000
    

    查询1:8秒

    SELECT * 
    FROM #Person 
    WHERE LEFT (Lastname, 1) = 'Z'
    GO 100
    

    查询2:8秒

    SELECT *  
    FROM #Person 
    WHERE LastName LIKE 'Z%'
    GO 100
    

    这里的表演没有区别。我的测试有什么问题吗?在这种情况下,我对讽刺性的理解有问题吗?

    事先谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tim Biegeleisen    6 年前

    LastName