在資料查詢分析時邏輯讀取次數到底反應了什么?多嵌套查詢邏輯讀取次數反而更少?
如在一個100W資料的表中執行分頁查詢,現寫了幾個sql,分別是用 2012后新增Offset,Fetch Next分頁方式,以及2005新增的row_number,代碼如下:
Declare @pageIndex int = 800;
Declare @pageSize int = 20;
-- 分頁查詢1
Select * From [order] Order By id asc Offset (@pageIndex-1)*@pageSize Rows Fetch Next @pageSize Rows Only
-- 分頁查詢2
SELECT * FROM [order] WHERE ID IN (
SELECT ID FROM (SELECT ID,ROW_NUMBER() OVER ( ORDER BY ID asc) AS num FROM [order]) AS settable
WHERE num BETWEEN (@pageIndex-1)*@pageSize + 1 AND @pageIndex*@pageSize )
-- 分頁查詢3
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS rid,* FROM [order]) AS t
WHERE t.rid between (@pageIndex-1) * @pageSize+1 AND @pageIndex*@pageSize
(20 行受影響)
表“Order”。掃描計數 1,邏輯讀取次數 1455,物理讀取次數 0,頁面服務器讀取次數 0,預讀讀取次數 0,頁面服務器預讀讀取次數 0,LOb 邏輯讀取次數 0,LOB 邏輯讀取次數 0,LOB 頁面服務器讀取次數 0,LOB 預讀讀取次數 0,LOB 頁面服務器預讀讀取次數 0。
(20 行受影響)
表“Order”。掃描計數 1,邏輯讀取次數 89,物理讀取次數 0,頁面服務器讀取次數 0,預讀讀取次數 0,頁面服務器預讀讀取次數 0,LOb 邏輯讀取次數 0,LOB 邏輯讀取次數 0,LOB 頁面服務器讀取次數 0,LOB 預讀讀取次數 0,LOB 頁面服務器預讀讀取次數 0。
(20 行受影響)
表“Order”。掃描計數 1,邏輯讀取次數 1543,物理讀取次數 0,頁面服務器讀取次數 0,預讀讀取次數 0,頁面服務器預讀讀取次數 0,LOb 邏輯讀取次數 0,LOB 邏輯讀取次數 0,LOB 頁面服務器讀取次數 0,LOB 預讀讀取次數 0,LOB 頁面服務器預讀讀取次數 0。
uj5u.com熱心網友回復:
邏輯讀取次數是指從快取中讀取的頁面數量.轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/282489.html
標籤:疑難問題
上一篇:資料庫第六章課后作業
下一篇:萌新求解(關于手游腳本)
