一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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

 liuguichuan 2014-11-11

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


  1. /** <strong>查詢</strong>總<strong>記錄</strong>數(shù) **/  
  2.     SELECT  
  3.         COUNT(id)   
  4.     FROM  
  5.         USER   
  6.     order by  
  7.         id  
  8.   
  9. /** <strong>查詢</strong>結(jié)果集 **/  
  10. select  
  11.         *   
  12.     from  
  13.         ( select  
  14.             row_.*,  
  15.             rownum rownum_   
  16.         from  
  17.             ( select  
  18.                 id ,   
  19.                 user_number,  
  20.                 user_name,  
  21.                 user_password,       
  22.                 sex,  
  23.                 Registered_time,  
  24.                 last_login_time,  
  25.                 post  
  26.                     from  
  27.                 USER  u  
  28.             order by  
  29.                 u.id) row_   
  30.         where  
  31.             rownum <= ?  
  32.         )   
  33.     where  
  34.         rownum_ > ?  

 

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

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

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


  1. SELECT  /*+ROWID(USER)*/   count(*)  FROM USER t   
  2. 或者  
  3. SELECT  /*+ INDEX(USER ID) */ count(*) FROM USER  t  

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

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

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

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

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

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久久亚洲国产视频三级黄| 亚洲国产av国产av| 日本精品理论在线观看| 欧美黑人暴力猛交精品| 日本人妻精品中文字幕不卡乱码 | 国产一区二区三区成人精品| 日韩欧美一区二区黄色| 色狠狠一区二区三区香蕉蜜桃| 好吊日在线视频免费观看| 国产成人av在线免播放观看av| 午夜久久久精品国产精品| 日本乱论一区二区三区 | 国产欧美性成人精品午夜| 91欧美亚洲视频在线| 亚洲最新一区二区三区| 色婷婷在线视频免费播放| 国产精品成人一区二区在线| 日本欧美一区二区三区在线播| 女生更色还是男生更色| 少妇丰满a一区二区三区| 国产一区二区三区免费福利| 日本人妻中出在线观看| 欧美黑人在线一区二区| 日韩欧美综合中文字幕| 日韩精品亚洲精品国产精品| 中文人妻精品一区二区三区四区| 东京热一二三区在线免| 国产欧美精品对白性色| 久久精品国产亚洲av麻豆尤物| 色综合久久中文综合网| 人妻乱近亲奸中文字幕| 成人午夜爽爽爽免费视频| 国产精品欧美一区二区三区不卡| 国产日韩精品激情在线观看| 亚洲最新中文字幕一区| 女生更色还是男生更色| 日韩一区二区三区18| 中文字幕日韩一区二区不卡| 欧美做爰猛烈叫床大尺度| 亚洲高清中文字幕一区二区三区| 免费观看在线午夜视频|