小编Mic*_*son的帖子

带有参数化 LIKE 的意外表扫描

参数化LIKE语句时,我在 SQL Server 2005 上遇到了针对堆表的意外表扫描......但是当与变量相同的值被硬编码时,会发生预期的索引查找。

这个问题只发生在这种特定的情况下......所以我对如何解决这个问题并不感到困惑,我对为什么会发生这种情况感到困惑。

以下 T-SQL 应在 SQL Server 2005 上重现该问题:

IF (OBJECT_ID('tempdb.dbo.#tblTest') IS NOT NULL)
    DROP TABLE dbo.#tblTest
GO

CREATE TABLE dbo.#tblTest (
    ID INT IDENTITY(1, 1),
    SerialNumber VARCHAR(50)
)
GO

-- Populate the table with 10,000 rows
SET NOCOUNT ON
DECLARE @i INT
SET @i = 0

WHILE @i < 10000
BEGIN
    INSERT INTO dbo.#tblTest VALUES(CAST(@i AS VARCHAR(10)))
    SET @i = @i + 1
END
GO

-- To recreate the issue, the …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server t-sql

5
推荐指数
1
解决办法
1130
查看次数

标签 统计

sql-server ×1

sql-server-2005 ×1

t-sql ×1