java分批查询oracle数据库_数据库的分批查询问题
在開發(fā)某個要操作數(shù)據(jù)庫的項(xiàng)目時候,我突然想到如何數(shù)據(jù)庫的數(shù)據(jù)量太大,一般項(xiàng)目設(shè)計(jì)的時候,會一次讀取所有的數(shù)據(jù)到內(nèi)存中,這有可能造成內(nèi)存的溢出,或者系統(tǒng)效率的降低。那么我們?nèi)绾卧O(shè)計(jì)一個開發(fā)方案來解決這中問題呢?
百度了一個說法:
在查詢的數(shù)據(jù)量比較大時,我們會采用分批查詢的方式來查詢數(shù)據(jù)庫。
這是因?yàn)閿?shù)據(jù)庫會把滿足查詢條件的所有記錄都裝載到內(nèi)存,造成大量資源被占用,嚴(yán)重影響系統(tǒng)運(yùn)行的效率。
但是,數(shù)據(jù)庫固有的存儲過程不支持物理分頁,所以如果采用分批查詢方式,還需要開發(fā)人員編寫自己的存儲過程來實(shí)現(xiàn)。 具體的實(shí)現(xiàn)請從網(wǎng)上找,實(shí)現(xiàn)方式大致差不多!
這樣,服務(wù)端每次只把若干條(一般20條)記錄返回給客戶端,這樣,既節(jié)省資源,又加快通訊的效率!
但是,發(fā)現(xiàn)上面沒有給出具體的分批查詢設(shè)計(jì)實(shí)現(xiàn)方案。所以希望大家能交流下心得,最后有具體案例的實(shí)現(xiàn)方式和方法。
特別是在小型嵌入式設(shè)備中,采用的是sqlite數(shù)據(jù)庫,數(shù)據(jù)量大的話,基本必須采用分批查詢,分頁查詢才行。
搜索的方案
(1)通過sql分頁查詢語句,利用的表中的某個字段分組分頁
select * from users order by id limit 10 offset 0;//offset代表從第幾條記錄“之后“開始查詢,limit表明查詢多少條結(jié)果
運(yùn)用:
sqlitecmd.CommandText = string.Format("select * from GuestInfo order by GuestId limit {0} offset {0}*{1}", size, index-1);//size:每頁顯示條數(shù),index頁碼
(2)語句性能要優(yōu)化,避免查詢數(shù)據(jù)的性能
總結(jié)
以上是生活随笔為你收集整理的java分批查询oracle数据库_数据库的分批查询问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java表单上下左右滚动_怎么在网页中实
- 下一篇: 小程序mysql+php测试,分享微信小