在開發某個要操做數據庫的項目時候,我忽然想到如何數據庫的數據量太大,通常項目設計的時候,會一次讀取全部的數據到內存中,這有可能形成內存的溢出,或者系統效率的下降。那麼咱們如何設計一個開發方案來解決這中問題呢?sql
百度了一個說法:
在查詢的數據量比較大時,咱們會採用分批查詢的方式來查詢數據庫。
這是由於數據庫會把知足查詢條件的全部記錄都裝載到內存,形成大量資源被佔用,嚴重影響系統運行的效率。
可是,數據庫固有的存儲過程不支持物理分頁,因此若是採用分批查詢方式,還須要開發人員編寫本身的存儲過程來實現。 具體的實現請從網上找,實現方式大體差很少!
這樣,服務端每次只把若干條(通常20條)記錄返回給客戶端,這樣,既節省資源,又加快通信的效率!數據庫
可是,發現上面沒有給出具體的分批查詢設計實現方案。因此但願你們能交流下心得,最後有具體案例的實現方式和方法。性能
特別是在小型嵌入式設備中,採用的是sqlite數據庫,數據量大的話,基本必須採用分批查詢,分頁查詢才行。優化
搜索的方案設計
(1)經過sql分頁查詢語句,利用的表中的某個字段分組分頁orm
select * from users order by id limit 10 offset 0;//offset表明從第幾條記錄「以後「開始查詢,limit代表查詢多少條結果sqlite
運用:
sqlitecmd.CommandText = string.Format("select * from GuestInfo order by GuestId limit {0} offset {0}*{1}", size, index-1);//size:每頁顯示條數,index頁碼內存
(2)語句性能要優化,避免查詢數據的性能資源