……天天向上

          好的想法總是無窮無盡

          統計

          留言簿(1)

          閱讀排行榜

          評論排行榜

          一個簡單的分頁展示系統優化總結

          由于開發經驗較少,數據量較大(千萬級,日有40萬條數據左右),導致這個分頁jsp頁面做的效率非常低,通過一系列的優化后,效果明顯得到了提高,記錄一下筆記:
          1、分頁獲取的list對象集合由于沒有預料到數據量的大小,是直接一次性讀取然后展示到前臺的,導致查詢展示效率非常低:
          更改SQL語句,改為按照當前需要展示的數據行數,通過SQL的ROWNUM來進行控制查詢的數據量大小,(插入數據時,打開一個數據庫連接即一次性插入100條數據(可以配置的模式)):
          SELECT BRAS_ADDRESS, APPLYTIMES, ALLFAILTIMES,SUCCESSRATE, RN 
          FROM 
          (SELECT BRAS_ADDRESS, APPLYTIMES, ALLFAILTIMES,SUCCESSRATE, ROWNUM AS RN 
          FROM 
          (SELECT BRAS_ADDRESS, APPLYTIMES, ALLFAILTIMES,
          1-ALLFAILTIMES/DECODE(APPLYTIMES,0,1,APPLYTIMES) AS SUCCESSRATE  
          FROM 
          (SELECT BRAS_ADDRESS, 
          SUM(DECODE(AUTNCOUNTTYPE,
          'REQ_CHALLENGE',APPLYTIMES,0)) AS APPLYTIMES, 
          SUM(DECODE(AUTNCOUNTTYPE,
          'ACK_CHALLENGE',APPLYTIMES,'ACK_AUTH',APPLYTIMES,'REQ_LOGOUT',APPLYTIMES,0)) AS ALLFAILTIMES 
          FROM T_BRAS_XXXX 
          WHERE READTIME between TO_DATE(
          '2012-06-01 00:00:00','yyyy-MM-dd HH24:mi:ss'
          and TO_DATE(
          '2012-06-12 23:59:59','yyyy-MM-dd HH24:mi:ss')
          GROUP BY BRAS_ADDRESS 
          )
          ORDER BY SUCCESSRATE

          WHERE  ROWNUM 
          <= 180 
          )
          WHERE RN 
          > 165 

          2、建立索引,建立索引的字段不能使用函數避免索引失效;
          3、建立分區表,將間隔5天的數據放在一個表中:


          ----------------------刪除原表,新建分區表
          --刪除表
          drop table T_BRAS_XXXX;
          commit;

          --創建分區表:利用Oracle11g INTERVAL進行分區的方法
          create table T_BRAS_XXXX
          (
          BRAS_XXXX_ID integer NOT NULL PRIMARY KEY,
          BRAS_XXXX VARCHAR2(
          64),
          AUTNCOUNTTYPE VARCHAR2(
          50),
          SUCCESSTIMES NUMBER,
          APPLYTIMES NUMBER,
          INTERVALTIME NUMBER,
          UPDATETIME DATE  DEFAULT SYSDATE,
          READTIME DATE
          )
          PARTITION BY RANGE (READTIME)
          INTERVAL (NUMTODSINTERVAL(
          5,'day'))
          (
            PARTITION T_BRAS_XXXX_PART01 VALUES LESS THAN (TO_DATE(
          '2012-07-01 00:00:00','yyyy-MM-dd HH24:mi:ss'))
          )
          --保留原來創建的BRAS_XXXX_ID自增序列
          --創建索引
          create index idx_t_bras_XXXX on t_bras_XXXX(readtime,bras_address);
          commit;

          --查看分區是否成功:
          select table_name,partition_name from user_tab_partitions where table_name
          ='T_BRAS_XXXX';

          posted on 2012-07-16 11:30 japper 閱讀(525) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 鹰潭市| 三台县| 义乌市| 尼勒克县| 遂平县| 台东市| 东乌| 平阳县| 定结县| 新昌县| 周至县| 裕民县| 襄城县| 永城市| 大足县| 林芝县| 榕江县| 咸阳市| 个旧市| 桂阳县| 新泰市| 顺昌县| 南靖县| 宁都县| 沧源| 防城港市| 义乌市| 麦盖提县| 四会市| 图们市| 郑州市| 宁陵县| 赤峰市| 丰顺县| 呼伦贝尔市| 荣成市| 贵定县| 麟游县| 宽城| 青铜峡市| 如皋市|