oracle count 百萬級 分頁查詢記要總數、總條數最佳化

來源:互聯網
上載者:User

標籤:

oracle count 百萬級 分頁查詢記錄總數、總條數最佳化

oracle count 百萬級 查詢記錄總數、總條數最佳化 

最近做一個項目時,做分頁時,發現分頁查詢速度很慢,分頁我做的是兩次查詢,一次是查詢總數,一次是查詢分頁結果

/** 查詢總記錄數 **/    SELECT        COUNT(id)     FROM        USER     order by        id/** 查詢結果集 **/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萬多條,這個是沒有查詢條件時的查詢,也就是使用者剛剛進入模組時的查詢,發現查詢時間是2566ms~2152ms之間,單獨執行每條語句,發現第一條的執行時間在2000ms以上,在PL/SQL中執行的結果也證實了我的判斷。所以要對select count語句進行最佳化。

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

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

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

 使用後,單條統計總數的查詢在800ms左右,分頁查詢結果基本在900ms~950ms之間,基本在一秒之內,達到了當初設計需求。

    當然,這個是沒有加查詢條件的,當把查詢條件加入後,不管前面加不加強制索引,結果時間都在2000ms之間,所以,如果要進行有條件的查詢,就要在where條件中進行最佳化。特別注意條件欄位查詢前後順序。

    具體最佳化請參考

1.淺析Oracle語句最佳化規則

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

oracle count 百萬級 分頁查詢記要總數、總條數最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.