Oracle如何快速操作千萬級大表資料

2021-08-15 23:35:19 字數 922 閱讀 6661

不管oracle有多牛,乙個上千萬級記錄資料的表操作起來還是很慢,是超級慢.最近公司處理乙個接近一億記錄數的表,需要按時間刪除前幾個月的資料,這個就頭疼了.就是統計此表的總記錄數都要處理10多分鐘,更不用說根據時間條件去刪除資料了.現在說說我在操作大表時遇到的問題吧.

剛開始我使用的是這個sql:

delete

from sun_log_access_2016 where

time

'2016-7-1','yyyy-mm-dd');

這就是告訴oracle我要刪除7月份之前的所有資料,oracle在處理這個sql的時候會去遍歷那一億資料(這就會花費一大部分時間),在遍歷的事就計算每條記錄的time然後判斷,判斷晚了之後再刪除.在刪除的過程中oracle還要記錄redo日誌(此日誌是為了恢復刪除的資料),這也需要花費大量的時間,若表中有索引,在刪除的過程中oracle還要維護索引,這也會占用大量的效能.

用此sql在一億資料中刪除300萬資料需要一兩百分鐘(可怕呀!!!)

使用此sql:

delete

from sun_log_access_2016 nologging where

time

'2016-7-1','yyyy-mm-dd');

指定nologging關鍵字,讓oracle不記錄日誌

刪除此表的索引(刪除完了之後從建索引)

用此sql在一億資料刪除300萬資料只需要10多分鐘(這就是效率)

mysql千萬級如何優化?

1 查詢語句上,只寫必要的字段,建好索引,注意一下查詢條件的使用,多表查詢不要用框架 自己寫sql 2 一定要分頁 一些小表也養成習慣,哪怕你在前台設定多一點可選記錄數選項 如,10,50,100,500,1000 區域網環境 不能再多了孩子 3 在一定數量的基礎上,做好表分割槽 4 拆表 5 拆庫...

oracle分頁查詢千萬級優化

在做比對專案時,有表是3千萬多的資料,在頁面做分頁查詢時很卡40s,反正差不多一分鐘的時間,後來更了sql,優化了 就好了很多,4s就可以了 sql是取條數時不要用and,between這些 優化後的sql select from select c.a.rownum rn from tt crm c...

php Mysql 優化,百萬至千萬級快速分頁

mysql 效能到底能有多高?用了php半年多,真正如此深入的去思考這個問題還是從前天開始。有過痛苦有過絕望,到現在充滿信心!mysql 這個資料庫絕對是適合dba級的高手去玩的,一般做一點1萬篇新聞的小型系統怎麼寫都可以,用xx框架可以實現快速開發。可是資料量到了10萬,百萬至千萬,他的效能還能那...