最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle查所有表的索引個(gè)數(shù)的示例代碼

 更新時(shí)間:2026年01月30日 08:41:24   作者:DomDanrtsey  
本文主要介紹了oracle查所有表的索引個(gè)數(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 查看當(dāng)前用戶所有表的索引數(shù)量

SELECT 
    t.table_name,
    COUNT(i.index_name) as index_count,
    LISTAGG(i.index_name, ', ') WITHIN GROUP (ORDER BY i.index_name) as index_names
FROM user_tables t
LEFT JOIN user_indexes i ON t.table_name = i.table_name
GROUP BY t.table_name
ORDER BY COUNT(i.index_name) DESC, t.table_name;

2. 查看所有用戶所有表的索引數(shù)量(需要DBA權(quán)限)

SELECT 
    i.table_owner,
    i.table_name,
    COUNT(i.index_name) as index_count,
    LISTAGG(i.index_name, ', ') WITHIN GROUP (ORDER BY i.index_name) as index_names
FROM dba_indexes i
WHERE i.table_owner NOT IN ('SYS', 'SYSTEM', 'XDB', 'CTXSYS', 'MDSYS', 'ORDSYS')  -- 排除系統(tǒng)用戶
GROUP BY i.table_owner, i.table_name
ORDER BY i.table_owner, COUNT(i.index_name) DESC, i.table_name;

3.查詢表及其索引的詳細(xì)信息–推薦使用,oracle國(guó)產(chǎn)化轉(zhuǎn)換到tidb,最好明確知道所有需要遷移的生產(chǎn)表的條數(shù)等令牌

SELECT 
    t.owner,
    t.table_name,
    t.num_rows as table_rows,
    COUNT(i.index_name) as total_indexes,
    SUM(CASE WHEN i.uniqueness = 'UNIQUE' THEN 1 ELSE 0 END) as unique_indexes,
    SUM(CASE WHEN i.uniqueness = 'NONUNIQUE' THEN 1 ELSE 0 END) as nonunique_indexes,
    SUM(CASE WHEN i.index_type = 'FUNCTION-BASED NORMAL' THEN 1 ELSE 0 END) as function_based_indexes
FROM dba_tables t
LEFT JOIN dba_indexes i ON t.owner = i.table_owner AND t.table_name = i.table_name
WHERE t.owner = 'YOUR_SCHEMA_NAME'  -- 替換為你的模式名
GROUP BY t.owner, t.table_name, t.num_rows
ORDER BY COUNT(i.index_name) DESC, t.table_name;

4.按索引類(lèi)型統(tǒng)計(jì)

SELECT 
    i.table_owner,
    i.table_name,
    i.index_type,
    COUNT(*) as count_per_type,
    LISTAGG(i.index_name, ', ') WITHIN GROUP (ORDER BY i.index_name) as index_list
FROM dba_indexes i
WHERE i.table_owner = 'YOUR_SCHEMA_NAME'  -- 替換為你的模式名
GROUP BY i.table_owner, i.table_name, i.index_type
ORDER BY i.table_name, i.index_type;

5.查詢沒(méi)有索引的表

-- 查找當(dāng)前用戶下沒(méi)有索引的表
SELECT 
    t.table_name,
    t.num_rows,
    t.blocks
FROM user_tables t
WHERE NOT EXISTS (
    SELECT 1 
    FROM user_indexes i 
    WHERE i.table_name = t.table_name
)
AND t.table_name NOT LIKE 'BIN$%'  -- 排除回收站中的表
ORDER BY t.num_rows DESC NULLS LAST;

-- 查找所有用戶下沒(méi)有索引的表(需要DBA權(quán)限)
SELECT 
    t.owner,
    t.table_name,
    t.num_rows
FROM dba_tables t
WHERE NOT EXISTS (
    SELECT 1 
    FROM dba_indexes i 
    WHERE i.table_owner = t.owner 
    AND i.table_name = t.table_name
)
AND t.owner NOT IN ('SYS', 'SYSTEM', 'XDB')
AND t.table_name NOT LIKE 'BIN$%'
ORDER BY t.owner, t.num_rows DESC NULLS LAST;

6.索引列數(shù)統(tǒng)計(jì)

-- 統(tǒng)計(jì)每個(gè)索引的列數(shù)
SELECT 
    i.table_name,
    i.index_name,
    i.uniqueness,
    i.status,
    COUNT(ic.column_position) as column_count,
    LISTAGG(ic.column_name, ', ') WITHIN GROUP (ORDER BY ic.column_position) as columns
FROM user_indexes i
JOIN user_ind_columns ic ON i.index_name = ic.index_name
GROUP BY i.table_name, i.index_name, i.uniqueness, i.status
ORDER BY i.table_name, i.index_name;

7.實(shí)用的匯總查詢

-- 索引統(tǒng)計(jì)匯總
WITH index_stats AS (
    SELECT 
        owner,
        table_name,
        COUNT(*) as total_indexes,
        ROUND(AVG(blevel), 2) as avg_blevel,
        ROUND(AVG(leaf_blocks), 2) as avg_leaf_blocks,
        SUM(CASE WHEN status != 'VALID' THEN 1 ELSE 0 END) as invalid_indexes
    FROM dba_indexes
    WHERE owner = 'YOUR_SCHEMA_NAME'
    GROUP BY owner, table_name
)
SELECT 
    owner,
    COUNT(DISTINCT table_name) as tables_with_indexes,
    SUM(total_indexes) as total_index_count,
    ROUND(AVG(total_indexes), 2) as avg_indexes_per_table,
    ROUND(MEDIAN(total_indexes), 2) as median_indexes_per_table,
    MAX(total_indexes) as max_indexes_in_table,
    SUM(invalid_indexes) as total_invalid_indexes
FROM index_stats
GROUP BY owner;

8.生產(chǎn)監(jiān)控大表無(wú)索引情況

-- 查找行數(shù)超過(guò)10000但索引數(shù)少于2個(gè)的表
SELECT 
    t.owner,
    t.table_name,
    t.num_rows,
    COUNT(i.index_name) as index_count
FROM dba_tables t
LEFT JOIN dba_indexes i ON t.owner = i.table_owner AND t.table_name = i.table_name
WHERE t.num_rows > 10000
AND t.owner = 'YOUR_SCHEMA_NAME'
GROUP BY t.owner, t.table_name, t.num_rows
HAVING COUNT(i.index_name) < 2
ORDER BY t.num_rows DESC;

9.查看索引使用情況(需要Oracle 11g及以上)

SELECT 
    table_name,
    index_name,
    used
FROM v$object_usage
WHERE used = 'NO'  -- 查看未使用的索引
ORDER BY table_name;

10.生成創(chuàng)建索引的腳本

SELECT 
    'CREATE INDEX idx_' || table_name || '_' || column_name || 
    ' ON ' || table_name || '(' || column_name || ');' as create_index_sql
FROM (
    SELECT DISTINCT
        t.table_name,
        tc.column_name
    FROM user_tables t
    JOIN user_tab_columns tc ON t.table_name = tc.table_name
    WHERE NOT EXISTS (
        SELECT 1 
        FROM user_ind_columns ic 
        WHERE ic.table_name = t.table_name 
        AND ic.column_name = tc.column_name
    )
    AND t.table_name NOT LIKE 'BIN$%'
    AND tc.column_name NOT LIKE '%ID'  -- 排除ID列
    AND tc.data_type IN ('VARCHAR2', 'CHAR', 'NUMBER', 'DATE')  -- 只對(duì)某些數(shù)據(jù)類(lèi)型創(chuàng)建索引
)
WHERE ROWNUM <= 10;  -- 限制生成的數(shù)量

到此這篇關(guān)于oracle查所有表的索引個(gè)數(shù)的示例代碼的文章就介紹到這了,更多相關(guān)oracle查所有表索引個(gè)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

临泽县| 肃北| 漠河县| 仙居县| 东平县| 穆棱市| 谢通门县| 建水县| 巢湖市| 临城县| 梓潼县| 柘荣县| 商洛市| 土默特右旗| 河津市| 合川市| 民丰县| 大方县| 宜阳县| 铜山县| 朔州市| 马边| 扬州市| 灵璧县| 大邑县| 兴文县| 连城县| 宜兴市| 马鞍山市| 拉孜县| 若羌县| 积石山| 太谷县| 临潭县| 岳池县| 和顺县| 岑巩县| 安吉县| 郧西县| 石家庄市| 萍乡市|