2012-07-05 175 views
0

我發現了一個post關於新分頁stynax在SQL Server 2012中一樣性能問題(OFFSET n行FETCH NEXT M行ONLY)

SELECT p.ProductName 
FROM Products p 
ORDER BY p.ProductID 

OFFSET 10 ROWS 
FETCH NEXT 10 ROWS ONLY 

這是偉大的。但是當我查看執行計劃時,成本是100%。這是否意味着SELECT語句將獲取所有行,然後執行paing操作?這會導致性能問題?

我是SQL Server的新手,有誰能告訴我這個嗎?謝謝。

Screen shot of Execution Plan

回答

4

無成本的意思是比所有的語句特定語句的成本。由於您只有一條語句,因此它佔用了整個執行時間的100%。如果你有兩個陳述,那麼它將分攤成本。

同時,爲了避免混淆,我建議你寫的查詢這種方式,這使得它明確指出,OFFSET實際上是SELECT查詢的一部分:

SELECT p.ProductName 
FROM Products p 
ORDER BY p.ProductID 
    OFFSET 10 ROWS 
    FETCH NEXT 10 ROWS ONLY 

幫助?

相關問題