根据所要生成的条件提取创建索引的语句。
SELECT 'create index '||index_name ||' on '||table_name || ' ( ' || ltrim(MAX(sys_connect_by_path(column_name , ',')) , ',') ||' )
---------------- 表空间
tablespace TSIDX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 3M
minextents 1
maxextents unlimited
);' column_name
FROM (SELECT index_name,table_name, column_name,
row_number() over(PARTITION BY index_name,table_name ORDER BY index_name,table_name) rn ,
rownum prn
FROM sys.all_ind_columns
---------------------------------- 数据库名称
where index_owner = 'V7DCS_FY'
------------------------------------- 索引名称
and index_name like 'IX%')
START WITH rn = 1
CONNECT BY prn - 1 = PRIOR prn AND table_name = PRIOR table_name
GROUP BY index_name,table_name
ORDER BY index_name,table_name;
本文介绍了一种从现有Oracle数据库中自动生成创建索引SQL语句的方法。该方法通过查询系统视图all_ind_columns并使用连接遍历功能来构建完整的索引定义,包括表名、列名和表空间等配置选项。

被折叠的 条评论
为什么被折叠?



