簡單分頁的效能最佳化

來源:互聯網
上載者:User

採用網上常見的分頁方式,在sqlserver事件分析器中觀察,發現

幾個主要的sql查詢中,耗費最大的是查詢所有的記錄數。

將其從分頁程式中剔除,前後的效果進行對照。在30w左右的庫中查詢,大概時間消耗(單位:毫秒)如下:

改進前

第1頁,返回100條記錄,耗時:109.375
第5頁,返回100條記錄,耗時:109.375
第10頁,返回100條記錄,耗時:125
第50頁,返回100條記錄,耗時:125
第100頁,返回100條記錄,耗時:171.875
第500頁,返回100條記錄,耗時:171.875
第1000頁,返回100條記錄,耗時:218.75
第1500頁,返回100條記錄,耗時:234.375
第2000頁,返回100條記錄,耗時:250
第3000頁,返回0條記錄,耗時:187.5

改進後

第1頁,返回100條記錄,耗時:62.5
第5頁,返回100條記錄,耗時:78.125
第10頁,返回100條記錄,耗時:62.5
第50頁,返回100條記錄,耗時:78.125
第100頁,返回100條記錄,耗時:125
第500頁,返回100條記錄,耗時:140.625
第1000頁,返回100條記錄,耗時:156.25
第1500頁,返回100條記錄,耗時:171.875
第2000頁,返回100條記錄,耗時:203.125
第2500頁,返回100條記錄,耗時:250
第3000頁,返回0條記錄,耗時:140.625
第4000頁,返回0條記錄,耗時:156.25

 

如果sql語句包含了一個對普通欄位的排序操作,將會大大影響效率

第1頁,返回100條記錄,耗時:640.625
第10頁,返回100條記錄,耗時:5500
第50頁,返回100條記錄,耗時:4250
第100頁,返回100條記錄,耗時:4062.5
第500頁,返回100條記錄,耗時:4031.25
第1000頁,返回100條記錄,耗時:5171.875
第1500頁,返回100條記錄,耗時:4015.625
第2000頁,返回100條記錄,耗時:4359.375
第2500頁,返回100條記錄,耗時:4531.25
第3000頁,返回0條記錄,耗時:4203.125

但是,如果對這個普通欄位建立索引後,效率又恢複到可以接受的程度

第1頁,返回100條記錄,耗時:78.125
第10頁,返回100條記錄,耗時:109.375
第50頁,返回100條記錄,耗時:125
第100頁,返回100條記錄,耗時:140.625
第500頁,返回100條記錄,耗時:140.625
第1000頁,返回100條記錄,耗時:171.875
第1500頁,返回100條記錄,耗時:203.125
第2000頁,返回100條記錄,耗時:218.75
第2500頁,返回100條記錄,耗時:250
第3000頁,返回0條記錄,耗時:140.625

 

在access表中測試,還是30w條記錄,效能降低

第1頁,返回100條記錄,耗時:1937.5
第100頁,返回100條記錄,耗時:1765.625
第1000頁,返回100條記錄,耗時:1921.875
第2000頁,返回100條記錄,耗時:2109.375

一些發現:

  1. 在大量資料的查詢中,在where子句中使用非索引的欄位,對效能影響不大。但如果在Order by子句中使用了非索引的欄位,將會大大影響效率。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.