达梦数据库,导出所有NC表的索引并生成创建索引语句

SELECT 
    'CREATE ' ||
    CASE WHEN i.UNIQUENESS = 'UNIQUE' THEN 'UNIQUE ' ELSE '' END ||
    'INDEX ' || i.INDEX_NAME || ' ON ' || t.TABLE_NAME || '(' ||
    LISTAGG(ic.COLUMN_NAME, ',') WITHIN GROUP (ORDER BY ic.COLUMN_POSITION) || 
    ');' AS create_index_ddl
FROM 
    ALL_INDEXES i
JOIN 
    ALL_TABLES t ON i.TABLE_NAME = t.TABLE_NAME
JOIN 
    ALL_IND_COLUMNS ic ON i.INDEX_NAME = ic.INDEX_NAME
WHERE 
    t.TABLE_NAME LIKE 'NC\_%' ESCAPE '\'
    -- 排除主键索引 --
    AND NOT EXISTS (
        SELECT 1 
        FROM ALL_CONSTRAINTS c 
        WHERE c.CONSTRAINT_TYPE = 'P' 
          AND c.TABLE_NAME = t.TABLE_NAME 
          AND c.CONSTRAINT_NAME = i.INDEX_NAME
    )
    -- 仅包含有效索引类型 --
    AND i.INDEX_TYPE IN ('NORMAL', 'BITMAP', 'FUNCTIONAL', 'CLUSTER')
GROUP BY 
    i.INDEX_NAME, 
    t.TABLE_NAME, 
    i.UNIQUENESS
ORDER BY 
    t.TABLE_NAME, 
    i.INDEX_NAME;

 

posted @ 2025-07-28 11:12  不知名路人!  阅读(34)  评论(0)    收藏  举报