從性能調優的角度來看哪一個更重要?SQL Server高邏輯讀取與掃描計數
說一個查詢報告有大約200萬條記錄的表上的30次掃描和148次邏輯讀取。
相同查詢的修改版本報告1400次邏輯讀取的1次掃描。第二個查詢需要大約40ms的CPU時間來執行。第二個查詢更好嗎?
我想是這樣,這是我的論文:
在第一種情況下,我們有一個非常大的表大量的掃描。這對CPU和服務器內存來說代價很高,因爲表中的所有行都必須加載到內存中。數千次執行這樣的查詢將對服務器資源徵稅。
在第二種情況下,即使我們正在累積更多的邏輯讀取次數,我們的掃描次數也會減少。由於邏輯讀取實際上對應於從緩存中讀取的頁面數量,因此這裏的瓶頸將是網絡帶寬,以便將結果返回給客戶端。 SQL Server在這種情況下的實際工作量較少。
你的想法是什麼?
堆棧溢出是一個問答網站,因此這個問題是不恰當的,因爲它可能會產生辯論和基於意見的答案。 – 2015-02-08 03:55:41
請確保在運行查詢之前執行'DBCC DOPCLEANBUFFERS',以便使用冷緩衝區高速緩存測試查詢。否則,你將有誤導性的物理計數掃描結果。 – gotqn 2015-02-08 08:46:10
@GB,我不認爲這是辯論。當然有一種推薦的方法來實現數據庫優化,這正是我所期待的。 – 2015-02-08 15:29:06