不管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萬,百萬至千萬,他的效能還能那...