Sto provando a scrivere una paginazione delle dimensioni del database dei risultati della query. Poiché SQL Server 2012 offre OFFSET/FETCH
, lo sto utilizzando. Ma dopo aver aggiunto la dichiarazione alla mia richiesta, ci vuole 10 volte di più.Rallentamento delle prestazioni quando si utilizza OFFSET/FETCH con fulltext in SQL Server 2012
Le query:
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
First query restituisce risultati in 3 secondi, la seconda in 47 secondi. piano di esecuzione sono diverse, e il costo del secondo viene valutato solo il 7%, ciò che rende del tutto non ha senso per me:
Ho bisogno di aiuto come migliorare le prestazioni del impaginazione.
+1 a questa domanda, appena fuori dal factyou aggiunto un piano spiegare senza che nessuno poter richiedere per esso e questo è in realtà un problema di impaginazione in T-SQL incontra molto spesso – Najzero