Java,J2EE,Weblogic,Oracle

          java項目隨筆
          隨筆 - 90, 文章 - 6, 評論 - 61, 引用 - 0
          數(shù)據(jù)加載中……

          oracle刪除重復(fù)記錄

          刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個字段(peopleId)來判斷,只留有rowid最小的記錄

            delete
                from tb_user_add_serv_fee a
               where a.register_id in (select t.register_id
                                         from tb_user_add_serv_fee t
                                        where t.ubill_month = '201007'
                                        group by t.register_id, t.region_no
                                       having count(1) > 1)
                   
                 and rowid not in (select min(rowid)
                                     from tb_user_add_serv_fee t
                                    where t.ubill_month = '201007'
                                    group by t.register_id
                                   having count(1) > 1)
                 and a.ubill_month = '201007';

          Oracle刪除重復(fù)記錄的最好的方 法:
          DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(y.ROWID)
          FROM EMP y
          WHERE y.EMPNO = E.EMPNO )

           

           

           

          1、子查詢找出某員工最低的ROWID(肯定只有一個),其它大于這條記錄ROWID的,全部刪除。

          2、Oracle中使用ROWID刪除重復(fù)記錄最快,因為Rowid對應(yīng)這條記錄在磁盤上的位置

           

          面試:性能 優(yōu)化

          規(guī)則:SELECT子句中避免使用 ‘ * ‘
          規(guī)則:使用 exists語句代替in語句;
                      使用not exists代替not in
          規(guī)則:使用truncate代替delete from 表語句
          規(guī)則:減少訪 問數(shù)據(jù)庫的次數(shù)
          規(guī) 則:減少訪問數(shù)據(jù)庫的次數(shù)
          規(guī)則:使用表的別名(Alias)
          規(guī)則:盡快使用COMMIT
          規(guī)則:數(shù)據(jù)庫冗余字段的設(shè)計
          其它:Oracle與性能有關(guān)的幾個特征(三個緩沖區(qū))

          面試:企業(yè)為什么經(jīng)常使用Oracle? Oracle為什么這么牛?
          回答:從三個緩沖區(qū)入手
          一、日志緩沖區(qū)
          ·在添加一條記錄時,數(shù)據(jù)庫在后臺同時也要記錄一條日志
          ·Oracle 能夠先將日志寫在內(nèi)存中,緩沖區(qū)滿后再一次性寫入磁盤
          二、塊緩沖區(qū)
          ·如果一個表(如部門表)很少更新但經(jīng)常使用,那么可以將該表保存 在內(nèi)存中,從而避免頻繁訪問磁盤。
          ·訪問內(nèi)存的速度大于高于訪問磁盤的速度。
          三、SQL緩沖區(qū)
          ·數(shù)據(jù)庫執(zhí)行步驟:語法分 析、語義分析、編譯、優(yōu)化……
          ·所以SQL在執(zhí)行以前所消耗的時間是很長的
          ·Oracle數(shù)據(jù)庫會將sql保存在SQL緩沖區(qū),如果 執(zhí)行的是相同SQL,則無論執(zhí)行多少次,都只會編譯分析一次。從而減少分析和優(yōu)化時
          間。


          原貼:http://mamaoyuan625.javaeye.com/blog/394796

          posted on 2010-07-12 16:14 龔椿深 閱讀(466) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 福清市| 邢台县| 宽城| 泰来县| 夹江县| 绥中县| 博乐市| 潍坊市| 绵阳市| 华池县| 肥东县| 海宁市| 诸城市| 沂水县| 邓州市| 芦山县| 改则县| 甘谷县| 新龙县| 邻水| 射洪县| 贵溪市| 延长县| 贵阳市| 通榆县| 苏尼特右旗| 油尖旺区| 若羌县| 桐乡市| 灵台县| 衡东县| 库车县| 崇阳县| 游戏| 利川市| 资源县| 娱乐| 高碑店市| 太和县| 龙南县| 靖安县|