クエリ結果のデータベースサイズのページ付けを作成しようとしています。 SQL Server 2012がOFFSET/FETCH
を提供しているので、私はそれを使用しています。しかし、クエリに文を追加すると、10倍の時間がかかります。SQL Server 2012でFulltextでOFFSET/FETCHを使用するとパフォーマンスが低下する
クエリ:
SELECT
p.ShopId,
count(1) as ProductsQuantity,
MIN(LastPrice) as MinPrice,
MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE
(p.LastStatus > 0 OR p.LastStatus = -1)
GROUP BY p.ShopId
ORDER BY p.ShopId asc
SELECT
p.ShopId,
count(1) as ProductsQuantity,
MIN(LastPrice) as MinPrice,
MAX(LastPrice) as MaxPrice
FROM Product2 p WITH (NOLOCK)
INNER JOIN
CONTAINSTABLE(Product2, ProductName, 'czarny') AS KEY_TBL
ON KEY_TBL.[key]=p.Id
WHERE
(p.LastStatus > 0 OR p.LastStatus = -1)
GROUP BY p.ShopId
ORDER BY p.ShopId asc
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY
まずクエリ47秒で3秒、秒1で結果を返します。実行計画は完全に私には意味をなさないものを、異なっており、第二のコストはわずか7%として評価されています
私は改ページのパフォーマンスを改善する方法を助ける必要があります。
+1、それをaksing誰ずに計画を説明し、これは追加だけfactyouの外に:第二、その一時テーブルに最初のクエリの結果を入れ、
order by ... offset fetch next
のためにそれを使用しているため実際にはT-SQLでの問題のページ付けが頻繁に行われます – Najzero