小编vrs*_*vrs的帖子

分页时 SQL Server 查询速度变慢

我在 SQL Server 2012 中看到以下 T-SQL 查询的一些奇怪行为:

SELECT Id 
FROM dbo.Person 
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
Run Code Online (Sandbox Code Playgroud)

单独执行这个查询在不到两秒的时间内给了我大约 1,300 个结果(有一个全文索引Name

但是,当我将查询更改为:

SELECT Id 
FROM dbo.Person 
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
OFFSET 0 rows
FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

给我10个结果需要20多秒。

下面的查询更糟糕:

SELECT Id 
FROM ( 
    SELECT ROW_NUMBER() OVER (ORDER BY Name) AS RowNum, Id 
    FROM dbo.Person
    WHERE CONTAINS(Name, '"John" AND "Smith"') ) AS RowConstrainedResult 
WHERE RowNum >= 0 AND RowNum < 11 
ORDER BY …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

16
推荐指数
2
解决办法
5646
查看次数

标签 统计

sql-server ×1

sql-server-2012 ×1