Oracle 找出需要建立索引的表
本文章討論的是本來應該建立索引而因為疏忽,或者考慮不周全而沒有建立的情況
select distinct sp.OBJECT_NAME,round(ds.bytes/1024/1024,2) MB,num_rows,last_analyzed
from v$sql_plan sp ,v$sqlarea sq,dba_segments ds,dba_tables dt
where sq.ADDRESS=sp.ADDRESS
and ds.segment_name=sp.object_name
and dt.table_name=ds.segment_name
and sp.options='FULL'
and dt.owner='使用者名稱'
and round(ds.bytes/1024/1024,2)>1
order by round(ds.bytes/1024/1024,2);
以上sql是:
通過定位到使用者,找到在v$sql_plan裡發生全表掃描的表。
並通過其他檢視表(dba_tables,dba_segments)的關聯,列出它的一些詳細資訊:大小,行數,分析時間。
我們可以再加一列,sq.sql_text把sql列印出來。
其中新增了一個條件是表的大小大於1M的表,一般情況下1M的表應該是1萬行左右。(如果1M的錶行數很少的話,那可能需要回收高水位線)
經測試,公司生產庫中操作表(operate_detail)1萬行資料在25M左右,
account_operate_detail表1萬行資料4.5M左右。
小表的話我們不考慮,因為走全表掃描可能更快。
這個sql查詢結果只做參考。具體問題還要具體分析。
當然這個是一個亡羊補牢的方法,我們在開發設計時,應該提起考慮好,那些列會用到索引,提起建立好,而不是出現效能問題在做。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8554499/viewspace-659905/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 找出需要回收高水位的表Oracle
- Oracle大表快速建立索引Oracle索引
- Oracle如何預估將要建立的索引和表的大小Oracle索引
- oracle 索引的建立與管理Oracle索引
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- 找出需要分析的表以及delete超過閥值(你設定)的表delete
- SQL SERVER建立索引需要注意的問題SQLServer索引
- 【TUNE_ORACLE】列出SQL謂詞中需要建立索引的列SQL參考OracleSQL索引
- 【Oracle】-【建立索引】-建立索引的操作原理與一些體會Oracle索引
- 找出冗餘索引的指令碼索引指令碼
- 索引組織表上建立BITMAP索引(三)索引
- 索引組織表上建立BITMAP索引(二)索引
- 索引組織表上建立BITMAP索引(一)索引
- Oracle表與索引的分析及索引重建Oracle索引
- MySQL建立表的時候建立聯合索引的方法MySql索引
- Oracle堆組織表的索引和索引組織表Oracle索引
- Oracle表與索引的分析及索引重建(轉)Oracle索引
- Oracle如何建立B樹索引Oracle索引
- oracle 繁忙時候建立索引Oracle索引
- oracle 建立所有分割槽索引Oracle索引
- 分割槽表並行建立索引並行索引
- oracle 巢狀表 索引表 使用Oracle巢狀索引
- oracle 索引組織表Oracle索引
- oracle 表分析和索引Oracle索引
- oracle如何估算即將建立的索引大小Oracle索引
- 【oracle 】如何估算即將建立的索引大小Oracle索引
- oracle 估算一個索引所需要的空間Oracle索引
- Oracle 分割槽表的建立Oracle
- ORACLE分析表和索引的指令碼Oracle索引指令碼
- 【ASK_ORACLE】關於Oracle索引分裂你需要知道的Oracle索引
- 學習Oracle的索引、表的儲存Oracle索引
- Oracle 表的移動和索引的重建Oracle索引
- Oracle 索引組織表(IOT)Oracle索引
- oracle 定期表及索引分析Oracle索引
- MYSQL索引建立需要注意以下幾點細節MySql索引
- 一個文章表的 MySQL 索引怎麼建立合理MySql索引
- Oracle 對某列的部分資料建立索引Oracle索引