檢查外來鍵是否有索引的指令碼
-
COLUMN COLUMNS format a30 word_wrapped
-
COLUMN tablename format a15 word_wrapped
-
COLUMN constraint_name format a15 word_wrapped
-
SELECT TABLE_NAME,
-
CONSTRAINT_NAME,
-
CNAME1 || NVL2(CNAME2, ',' || CNAME2, NULL) ||
-
NVL2(CNAME3, ',' || CNAME3, NULL) ||
-
NVL2(CNAME4, ',' || CNAME4, NULL) ||
-
NVL2(CNAME5, ',' || CNAME5, NULL) ||
-
NVL2(CNAME6, ',' || CNAME6, NULL) ||
-
NVL2(CNAME7, ',' || CNAME7, NULL) ||
-
NVL2(CNAME8, ',' || CNAME8, NULL) COLUMNS
-
FROM (SELECT B.TABLE_NAME,
-
B.CONSTRAINT_NAME,
-
MAX(DECODE(POSITION, 1, COLUMN_NAME, NULL)) CNAME1,
-
MAX(DECODE(POSITION, 2, COLUMN_NAME, NULL)) CNAME2,
-
MAX(DECODE(POSITION, 3, COLUMN_NAME, NULL)) CNAME3,
-
MAX(DECODE(POSITION, 4, COLUMN_NAME, NULL)) CNAME4,
-
MAX(DECODE(POSITION, 5, COLUMN_NAME, NULL)) CNAME5,
-
MAX(DECODE(POSITION, 6, COLUMN_NAME, NULL)) CNAME6,
-
MAX(DECODE(POSITION, 7, COLUMN_NAME, NULL)) CNAME7,
-
MAX(DECODE(POSITION, 8, COLUMN_NAME, NULL)) CNAME8,
-
COUNT(*) COL_CNT
-
FROM (SELECT SUBSTR(TABLE_NAME, 1, 30) TABLE_NAME,
-
SUBSTR(CONSTRAINT_NAME, 1, 30) CONSTRAINT_NAME,
-
SUBSTR(COLUMN_NAME, 1, 30) COLUMN_NAME,
-
POSITION
-
FROM USER_CONS_COLUMNS) A,
-
USER_CONSTRAINTS B
-
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
-
AND B.CONSTRAINT_TYPE = 'R'
-
GROUP BY B.TABLE_NAME, B.CONSTRAINT_NAME) CONS
-
WHERE COL_CNT > ALL
-
(SELECT COUNT(*)
-
FROM USER_IND_COLUMNS I
-
WHERE I.TABLE_NAME = CONS.TABLE_NAME
-
AND I.COLUMN_NAME IN (CNAME1, CNAME2, CNAME3, CNAME4, CNAME5,
-
CNAME6, CNAME7, CNAME8)
-
AND I.COLUMN_POSITION <= CONS.COL_CNT
-
GROUP BY I.INDEX_NAME)
- /
-
SET linesize 400;
-
COLUMN OWNER format a10 word_wrapped
-
COLUMN COLUMNS format a30 word_wrapped
-
COLUMN TABLE_NAME format a15 word_wrapped
-
COLUMN CONSTRAINT_NAME format a40 word_wrapped
-
SELECT OWNER,
-
TABLE_NAME,
-
CONSTRAINT_NAME,
-
CNAME1 || NVL2(CNAME2, ',' || CNAME2, NULL) ||
-
NVL2(CNAME3, ',' || CNAME3, NULL) ||
-
NVL2(CNAME4, ',' || CNAME4, NULL) ||
-
NVL2(CNAME5, ',' || CNAME5, NULL) ||
-
NVL2(CNAME6, ',' || CNAME6, NULL) ||
-
NVL2(CNAME7, ',' || CNAME7, NULL) ||
-
NVL2(CNAME8, ',' || CNAME8, NULL) COLUMNS
-
FROM (SELECT B.OWNER,B.TABLE_NAME,
-
B.CONSTRAINT_NAME,
-
MAX(DECODE(POSITION, 1, COLUMN_NAME, NULL)) CNAME1,
-
MAX(DECODE(POSITION, 2, COLUMN_NAME, NULL)) CNAME2,
-
MAX(DECODE(POSITION, 3, COLUMN_NAME, NULL)) CNAME3,
-
MAX(DECODE(POSITION, 4, COLUMN_NAME, NULL)) CNAME4,
-
MAX(DECODE(POSITION, 5, COLUMN_NAME, NULL)) CNAME5,
-
MAX(DECODE(POSITION, 6, COLUMN_NAME, NULL)) CNAME6,
-
MAX(DECODE(POSITION, 7, COLUMN_NAME, NULL)) CNAME7,
-
MAX(DECODE(POSITION, 8, COLUMN_NAME, NULL)) CNAME8,
-
COUNT(*) COL_CNT
-
FROM (SELECT SUBSTR(TABLE_NAME, 1, 30) TABLE_NAME,
-
SUBSTR(CONSTRAINT_NAME, 1, 30) CONSTRAINT_NAME,
-
SUBSTR(COLUMN_NAME, 1, 30) COLUMN_NAME,
-
POSITION
-
FROM DBA_CONS_COLUMNS WHERE OWNER NOT IN ('SYS','SYSTEM','SYSMAN','HR','OE','EXFSYS','DBSNMP','MDSYS','OLAPSYS','SCOTT','EXFSYS','SH','PM','CTXSYS')) A,
-
DBA_CONSTRAINTS B
-
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
-
AND B.CONSTRAINT_TYPE = 'R'
-
GROUP BY B.OWNER,B.TABLE_NAME, B.CONSTRAINT_NAME) CONS
-
WHERE COL_CNT > ALL
-
(SELECT COUNT(*)
-
FROM DBA_IND_COLUMNS I
-
WHERE I.TABLE_NAME = CONS.TABLE_NAME AND I.TABLE_OWNER=CONS.OWNER
-
AND I.COLUMN_NAME IN (CNAME1, CNAME2, CNAME3, CNAME4, CNAME5,
-
CNAME6, CNAME7, CNAME8)
-
AND I.COLUMN_POSITION <= CONS.COL_CNT
-
GROUP BY I.INDEX_NAME)
- /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1176022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 外來鍵缺索引檢查指令碼索引指令碼
- 查詢沒有索引的外來鍵索引
- 檢查CPU是否支援MMX指令的程式碼 (轉)
- 關於外來鍵約束和對應主鍵資訊的查詢指令碼指令碼
- oracle查詢表資訊(索引,外來鍵,列等)Oracle索引
- 檢查是否存在truncate或者rebuild的索引Rebuild索引
- 批次檢查主機是否可達的ping指令碼.指令碼
- 外來鍵沒有索引哪些DML操作會被阻塞索引
- 外來鍵有無索引帶來的影響學習與測試索引
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- RAC指令碼檢查指令碼
- shell指令碼死迴圈檢查是否有特定的路由,若不存在進行增加操作指令碼路由
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- 使用CHECKSYNTAX命令檢查RMAN指令碼是否存在語法錯誤指令碼
- Oracle 外來鍵查詢sqlOracleSQL
- 查詢一個表的外來鍵
- oracle檢視當前使用者下所有外來鍵、主鍵、索引、sequence的建立語句Oracle索引
- Oracle 指令碼 線上哪些索引從來沒有被使用過Oracle指令碼索引
- Oracle根據主鍵查詢外來鍵Oracle
- 表外來鍵未加索引之處理索引
- Oracle 外來鍵索引影響阻塞問題Oracle索引
- 【fk_index】外來鍵中有無索引的區別Index索引
- SQL SERVER中找出拙劣的約束,索引,外來鍵SQLServer索引
- ORACLE提供檢驗RAC是否健康指令碼Oracle指令碼
- 修改外來鍵為validate時需要驗證資料是否符合外來鍵約束
- SHELL指令碼檢查Oracle DG備庫是否已經應用歸檔指令碼Oracle
- 記憶體檢查指令碼記憶體指令碼
- 檢查備份情況的指令碼指令碼
- 檢查陣列中是否有重複項陣列
- oracle檢查資料庫是否有壞塊的命令Oracle資料庫
- 如何使用 Shell 指令碼來檢視多個伺服器的埠是否開啟?指令碼伺服器
- MySQL:slave 延遲一列 外來鍵檢查和自增加鎖MySql
- python檢測圖片是否存在指令碼Python指令碼
- Oracle查詢表的外來鍵引用關係Oracle
- 用shell指令碼來給mysql加索引指令碼MySql索引
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- Linux系統檢查指令碼Linux指令碼