日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化

發(fā)布時間:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

oracle count 百萬級 分頁查詢記錄總數(shù)、總條數(shù)優(yōu)化

oracle count 百萬級 查詢記錄總數(shù)、總條數(shù)優(yōu)化

最近做一個項目時,做分頁時,發(fā)現(xiàn)分頁查詢速度很慢,分頁我做的是兩次查詢,一次是查詢總數(shù),一次是查詢分頁結(jié)果

/** 查詢總記錄數(shù) **/

SELECT

COUNT(id)

FROM

USER

order by

id

/** 查詢結(jié)果集 **/

select

*

from

( select

row_.*,

rownum rownum_

from

( select

id ,

user_number,

user_name,

user_password,

sex,

Registered_time,

last_login_time,

post

from

USER u

order by

u.id) row_

where

rownum <= ?

)

where

rownum_ > ?

user表中的記錄是128萬多條,這個是沒有查詢條件時的查詢,也就是用戶剛剛進入模塊時的查詢,發(fā)現(xiàn)查詢時間是2566ms~2152ms之間,單獨執(zhí)行每條語句,發(fā)現(xiàn)第一條的執(zhí)行時間在2000ms以上,在PL/SQL中執(zhí)行的結(jié)果也證實了我的判斷。所以要對select count語句進行優(yōu)化。

在網(wǎng)上找了很多優(yōu)化方案,大多不盡人意,(分表的方式聽上去不錯,不過由于單表是歷史原因,這里就不作考慮)。最后找到一個比較令人滿意的答。就是在語句中加入 /*+ROWID(USER)*/或者/*+ INDEX(USER ID) */ 來提高查詢效果。

聽說這個就是強制使用索引統(tǒng)計結(jié)果?如果有哪位大蝦能把原理詳細告訴我,請來多多指點!

SELECT /*+ROWID(USER)*/ count(*) FROM USER t

或者

SELECT /*+ INDEX(USER ID) */ count(*) FROM USER t

使用后,單條統(tǒng)計總數(shù)的查詢在800ms左右,分頁查詢結(jié)果基本在900ms~950ms之間,基本在一秒之內(nèi),達到了當初設(shè)計需求。

當然,這個是沒有加查詢條件的,當把查詢條件加入后,不管前面加不加強制索引,結(jié)果時間都在2000ms之間,所以,如果要進行有條件的查詢,就要在where條件中進行優(yōu)化。特別注意條件字段查詢前后順序。

具體優(yōu)化請參考

1.淺析Oracle語句優(yōu)化規(guī)則

http://www.cnblogs.com/Automation_software/archive/2011/01/21/1940883.html

總結(jié)

以上是生活随笔為你收集整理的oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。