SQL提取當前庫內索引的建立語句
今天資料庫需要將幾個使用者裡的表索引以某一個使用者為標準進行一次統一版本,於是整理了一個指令碼方便以後使用,其中涉及到當前表裡的索引建立語句、LOB索引的表空間移動,筆記一下。。。
select 'create index '||index_name||' on '||table_name||'('||researchlist||') tablespace '||tablespace_name||' nologging;' from (
select table_name,tablespace_name,index_name,translate(ltrim(text,'/'),'*/','*,') researchlist from (
select row_number() over(partition by tablespace_name,index_name,table_name order by column_position desc) nums,text,index_name,tablespace_name,table_name from (
select index_name,table_name,column_name,tablespace_name,column_position, sys_connect_by_path(column_name,'/') text from (
select t1.index_name,
t1.table_name,
t1.column_name||' '||decode(t1.descend,'DESC',t1.descend) column_name,
t.tablespace_name,
t1.column_position
from user_indexes t
left join user_ind_columns t1 on t.index_name = t1.index_name
where t.index_type in( 'NORMAL','FUNCTION-BASED NORMAL')
AND T.UNIQUENESS = 'NONUNIQUE'
)
connect by index_name = prior index_name and column_position -1 = prior column_position)where index_name is not null) where nums=1)
union
select 'create bitmap index '||index_name||' on '||table_name||'('||researchlist||') tablespace '||tablespace_name||' nologging;' from (
select table_name,tablespace_name,index_name,translate(ltrim(text,'/'),'*/','*,') researchlist from (
select row_number() over(partition by tablespace_name,index_name,table_name order by column_position desc) nums,text,index_name,tablespace_name,table_name from (
select index_name,table_name,column_name,tablespace_name,column_position, sys_connect_by_path(column_name,'/') text from (
select t1.index_name,
t1.table_name,
t1.column_name||' '||decode(t1.descend,'DESC',t1.descend) column_name,
t.tablespace_name,
t1.column_position
from user_indexes t
left join user_ind_columns t1 on t.index_name = t1.index_name
where t.index_type in( 'BITMAP')
AND T.UNIQUENESS = 'NONUNIQUE'
)
connect by index_name = prior index_name and column_position -1 = prior column_position)where index_name is not null) where nums=1)
union
select distinct 'alter table ' || t.table_name || ' move ' || ' LOB(' ||
T.COLUMN_NAME || ') store as (tablespace CC_MAIN_IDX);'
from (select t1.table_name, t1.tablespace_name, t2.column_name column_name
from user_indexes t1
left join user_tab_cols t2 on t1.table_name = t2.table_name
and t1.index_type = 'LOB'
and t2.data_type like '%LOB') t
where t.column_name <> '0'
union
select 'create unique index '||index_name||' on '||table_name||'('||researchlist||') tablespace '||tablespace_name||' nologging;' from (
select table_name,tablespace_name,index_name,translate(ltrim(text,'/'),'*/','*,') researchlist from (
select row_number() over(partition by tablespace_name,index_name,table_name order by column_position desc) nums,text,index_name,tablespace_name,table_name from (
select index_name,table_name,column_name,tablespace_name,column_position, sys_connect_by_path(column_name,'/') text from (
select t1.index_name,
t1.table_name,
t1.column_name||' '||decode(t1.descend,'DESC',t1.descend) column_name,
t.tablespace_name,
t1.column_position
from user_indexes t
left join user_ind_columns t1 on t.index_name = t1.index_name
where T.UNIQUENESS = 'UNIQUE'
)
connect by index_name = prior index_name and column_position -1 = prior column_position) where index_name is not null) where nums=1);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10130206/viewspace-616687/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- 查詢當前正在執行的SQL語句並KILLSQL
- 檢視當前oracle中正在執行的sql語句OracleSQL
- 通過SQL語句提取儲存過程中的內容SQL儲存過程
- oracle檢視當前使用者下所有外來鍵、主鍵、索引、sequence的建立語句Oracle索引
- MySQL建立索引、修改索引、刪除索引的命令語句MySql索引
- sql語句建立表SQL
- 如何匯出MySQL索引的建立語句MySql索引
- oracle 中如何顯示sql語句的執行時間和sql語句的執行後的當前時間OracleSQL
- Oracle表部分資料提取SQL語句OracleSQL
- 指令碼:監控當前活動的語句指令碼
- sql語句建立日曆SQL
- idea內建資料庫 + sql語句庫表操作Idea資料庫SQL
- [zt] 基於索引的SQL語句優化索引SQL優化
- 【資料庫】SQL語句資料庫SQL
- 資料庫常用的sql語句大全--sql資料庫SQL
- 當前li元素的索引值索引
- Sqlserver自動查詢缺失索引及拼出建立索引的語句的指令碼SQLServer索引指令碼
- 【Tips】使用SQL生成外來鍵的SQL建立語句SQL
- 一條sql語句導致的資料庫當機問題及分析SQL資料庫
- 一條sql語句“導致”的資料庫當機問題及分析SQL資料庫
- 資料庫常用sql 語句資料庫SQL
- 資料庫SQL拼接語句資料庫SQL
- 4.3.2 關於使用SQL語句建立CDBSQL
- 常見的SQL語句(建立、刪除、切換)SQL
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- 2.5 指定資料庫建立語句資料庫
- 【SQL】16 SQL CREATE INDEX 語句、 撤銷索引、撤銷表以及撤銷資料庫、ALTER TABLE 語句、AUTO INCREMENT 欄位SQLIndex索引資料庫REM
- MySQL在ROW模式下通過binlog提取SQL語句MySql模式
- 資料庫索引設計與優化讀書筆記--《四》為SELECT語句建立理想的索引資料庫索引優化筆記
- mysql 索引巧用,SQL語句寫得忒野了MySql索引
- 快速定位sql語句執行內容SQL
- 查詢當前執行的sql及相關內容SQL
- Laravel 使用 sql 語句 和 sql 檔案 來建立執行資料庫遷移LaravelSQL資料庫
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- 資料庫常用操作SQL語句資料庫SQL
- SQL資料庫連線語句SQL資料庫
- 資料庫常用的sql語句彙總資料庫SQL