Nov 3, 2008

A wonderful PLSQL script is used to generate a index creation script.

--we want to create the index, using the same index name and table name with another schema
--the following procedure is used to generate the create index script

declare
val varchar2(10);
sql_val varchar2(100);
begin
for i in (select distinct index_name
from dba_ind_columns where table_owner='USR_LT' and table_name in
(select table_name from dba_tables where owner='LTYZDZ')
or 'ACCT_'table_name in (select table_name from dba_tables where owner='LTYZDZ')) loop
Select 'create index 'index_name' on 'table_name '('Substr(Sys_Connect_By_Path(column_name, ','), 2)')' into sql_val
From (Select Rownum rid, Rownum + 1 Next_Rid, column_name ,table_name,index_name From dba_ind_columns where index_name=i.index_name)
Where rid = (select count(*) from dba_ind_columns where index_name=i.index_name)
Start With Rid = 1
Connect By Prior Next_Rid = Rid;
dbms_output.put_line(sql_val);
end loop;
end;

--========output result===============================
create index IDX_ASSURE_NO on INFO_ASSURE(ASSURE_NO)
create index IDX_CDMA_SPEC_001 on CDMA_SPEC(USER_NO,DESTROY_DATE)
create index IDX_CHARGE_DEPOSIT_001 on CHARGE_DEPOSIT(USER_NO)
create index IDX_CODE_GROUP_001 on CODE_GROUP(GROUP_CODE)
create index IDX_CUSTOMER_NO on INFO_CUSTOMER(CUSTOMER_NO)
create index IDX_DEVICE_NUMBER on INFO_IVPN(DEVICE_NUMBER)
create index IDX_DIY_LIFECYCLE_001 on DIY_LIFECYCLE(USER_NO,DINNER_EXP_DATE)
create index IDX_INCDMA_SPEC on INCDMA_SPEC(USER_NO,DESTROY_DATE)
create index IDX_INCDMA_SPEC_002 on INCDMA_SPEC(USER_NO)
create index IDX_INFO_ASSURE_001 on INFO_ASSURE(LOCAL_NET)
create index IDX_INFO_BANK_001 on INFO_BANK(PAY_NO)
create index IDX_INFO_CDMA_001 on INFO_CDMA(LOCAL_NET)
create index IDX_INFO_CDMA_002 on INFO_CDMA(DEVICE_NUMBER)
create index IDX_INFO_CDMA_TEMP_001 on INFO_CDMA_TEMP(LOCAL_NET)
create index IDX_INFO_CUSTOMER_002 on INFO_CUSTOMER(LOCAL_NET)
create index IDX_INFO_FF_001 on INFO_FF(USER_NO,DESTROY_DATE)
create index IDX_INFO_INCDMA_001 on INFO_INCDMA(LOCAL_NET)
create index IDX_INFO_INCDMA_002 on INFO_INCDMA(USER_NO)
create index IDX_INFO_NAI_001 on INFO_NAI(USER_NO,FLAG)
create index IDX_INFO_PAY_001 on INFO_PAY(LOCAL_NET)
create index IDX_PAY_NO on INFO_PAY(PAY_NO)
create index IDX_PAY_NO_INVALID on PAY_RELATION(PAY_NO,INVALID_DATE)
create index IDX_PAY_RELATION_01 on PAY_RELATION(USER_NO)
create index IDX_PAY_RELATION_USER_NO on PAY_RELATION(USER_NO)
create index IDX_RES_INUIM_NUMBER_001 on RES_INUIM_NUMBER(UIM_NUMBER)
create index IDX_UIM_NUMBER on RES_UIM_NUMBER(UIM_NUMBER)
create index IDX_USER_NO on DINNER_LIFECYCLE(USER_NO)
create index IDX_USER_NO_001 on INFO_IVPN(USER_NO)
create index IDX_USER_NO_INVALID on PAY_RELATION(USER_NO,INVALID_DATE)
create index IDX_USER_NO_STATUS on INFO_CDMA(USER_NO,STATUS_CODE)
create index INDEX_PAY_NO on PAY_RELATION(PAY_NO)
create index INDEX_USER_DINNER on DINNER_USER(USER_DINNER)
create index INDEX_USER_NO on INFO_CDMA(USER_NO)

/*
the author of this script is by lusheng.
I give this task to him, then he created it. looks it works well.
wenderful.*/



No comments:

Post a Comment