<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 38, comments - 2, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    (轉)使用oracle的olap函數優化分頁查詢

    Posted on 2009-08-03 18:11 AntiquMan 閱讀(328) 評論(0)  編輯  收藏 所屬分類: Oracle

    上周在優化預警分析的工作中,發現由于分頁功能需要提供總條數 ,項目組內的普遍做法是進行兩次sql查詢,一次用count(*)獲得總條數,一次獲取真正的展現數據。其實oracle提供了olap函數對此進行優化,可通過偽列:count(*) over()獲得當前sql的總條數。

        比如:select t.*,count(*) over() from dual 會返回總條數為1。
     
        olap函數主要用于統計分析,熟練掌握能很好的提高sql執行效率。
            count(*) over() 具體功能描述如下:
           對一組內發生的事情進行累積計數,如果指定*或一些非空常數,count將對所有行計數,如果指定一個表達式,count返回表達式非空賦值的計數,當有相同值出現時,這些相等的值都會被納入被計算的值;可以使用DISTINCT來記錄去掉一組中完全相同的數據后出現的行數。
    SAMPLE:下面例子中計算每個員工在按薪水排序中當前行附近薪水在[n-50,n+150]之間的行數,n表示當前行的薪水
           例如,Philtanker的薪水2200,排在他之前的行中薪水大于等于2200-50的有1行,排在他之后的行中薪水小于等于2200+150的行沒有,所以count計數值cnt3為2(包括自己當前行);cnt2值相當于小于等于當前行的SALARY值的所有行數
    sql如下:

     SELECT last_name, salary, COUNT(*) OVER () AS cnt1,
               COUNT(*) OVER (ORDER BY salary) AS cnt2,
               COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS cnt3 FROM employees;

    結果如下 :

    LAST_NAME  SALARY  CNT2   CNT2  CNT3
    Olson          2100 107 1 3
    Markle 2200 107 3 2
    Philtanker 2200 107 3 2
    Landry 2400 107 5 8
    Gee 2400 107 5 8
    Colmenares 2500 107 11 10
    Patel 2500 107 10 10

    主站蜘蛛池模板: 亚洲欧洲精品成人久久曰| 久久精品国产亚洲网站| 久久国产亚洲精品| 最近2018中文字幕免费视频| 亚洲精品国产品国语在线| 99re6在线精品免费观看| 亚洲一区二区三区偷拍女厕| 久久精品亚洲日本佐佐木明希| A国产一区二区免费入口| 亚洲三区在线观看无套内射| 免费网站观看WWW在线观看| 亚洲国产精品一区二区成人片国内| 中文字幕av无码不卡免费| 好看的电影网站亚洲一区| 青青草无码免费一二三区| 亚洲精品中文字幕麻豆| 青娱乐免费视频在线观看| 亚洲精品V欧洲精品V日韩精品| 两性色午夜免费视频| 久久丫精品国产亚洲av| 一边摸一边桶一边脱免费视频 | 亚洲精品午夜无码电影网| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲日本va中文字幕久久| 日韩精品无码免费一区二区三区 | 午夜视频在线观看免费完整版| 亚洲精品无码mⅴ在线观看| 国产免费久久精品久久久| 在线视频网址免费播放| 亚洲综合久久成人69| 韩国18福利视频免费观看| 精品97国产免费人成视频| 亚洲免费在线视频| 欧洲美熟女乱又伦免费视频| jzzjzz免费观看大片免费| 亚洲日韩中文字幕天堂不卡 | 成在人线av无码免费高潮水| 亚洲综合成人网在线观看| 免费无码成人AV片在线在线播放| 一级毛片a免费播放王色| 亚洲特级aaaaaa毛片|