mysql表类型查询

普通表

bash 复制代码
SELECT 
    table_schema AS database_name,
    table_name
FROM 
    information_schema.tables
WHERE 
    table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND table_type = 'BASE TABLE'
    AND table_name NOT IN (
        SELECT DISTINCT table_name 
        FROM information_schema.partitions 
        WHERE partition_name IS NOT NULL
    )
ORDER BY 
    table_schema, table_name;

分区表

bash 复制代码
SELECT 
    p.table_schema AS database_name,
    p.table_name,
    GROUP_CONCAT(p.partition_name ORDER BY p.partition_ordinal_position) AS partitions,
    p.partition_method,
    p.partition_expression
FROM 
    information_schema.partitions p
WHERE 
    p.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND p.partition_name IS NOT NULL
GROUP BY 
    p.table_schema, p.table_name, p.partition_method, p.partition_expression
ORDER BY 
    p.table_schema, p.table_name;

区分表

bash 复制代码
SELECT 
    t.table_schema AS database_name,
    t.table_name,
    CASE 
        WHEN p.table_name IS NULL THEN '普通表'
        ELSE '分区表'
    END AS table_type,
    p.partition_method,
    p.partition_expression
FROM 
    information_schema.tables t
LEFT JOIN (
    SELECT DISTINCT 
        table_schema, 
        table_name,
        partition_method,
        partition_expression
    FROM 
        information_schema.partitions 
    WHERE 
        partition_name IS NOT NULL
) p ON t.table_schema = p.table_schema AND t.table_name = p.table_name
WHERE 
    t.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND t.table_type = 'BASE TABLE'
ORDER BY 
    t.table_schema, t.table_name;
	

查出数据量

bash 复制代码
SELECT 
    t.table_schema AS '数据库名',
    t.table_name AS '表名',
    CASE 
        WHEN p.table_name IS NULL THEN '普通表'
        ELSE CONCAT('分区表(', p.partition_method, ')')
    END AS '表类型',
    t.table_rows AS '数据行数(估算)',
    CONCAT(ROUND(t.data_length / (1024 * 1024), 2), ' MB') AS '数据大小',
    CONCAT(ROUND(t.index_length / (1024 * 1024), 2), ' MB') AS '索引大小',
    CONCAT(ROUND((t.data_length + t.index_length) / (1024 * 1024), 2), ' MB') AS '总大小',
    p.partition_expression AS '分区键'
FROM 
    information_schema.tables t
LEFT JOIN (
    SELECT DISTINCT 
        table_schema, 
        table_name,
        partition_method,
        partition_expression
    FROM 
        information_schema.partitions 
    WHERE 
        partition_name IS NOT NULL
) p ON t.table_schema = p.table_schema AND t.table_name = p.table_name
WHERE 
    t.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND t.table_type = 'BASE TABLE'
ORDER BY 
    t.table_schema, 
    CASE WHEN p.table_name IS NULL THEN 0 ELSE 1 END,  -- 普通表在前
    t.table_name;



SELECT 
    t.table_schema AS '数据库',
    t.table_name AS '表名',
    CASE 
        WHEN p.partition_method IS NULL THEN '普通表'
        ELSE CONCAT('分区表(', p.partition_method, ')')
    END AS '表类型',
    t.table_rows AS '估算行数',
    CONCAT(ROUND(t.data_length/1024/1024, 2), ' MB') AS '数据大小',
    p.partition_expression AS '分区键'
FROM 
    information_schema.tables t
LEFT JOIN (
    SELECT 
        table_schema, 
        table_name,
        partition_method,
        partition_expression
    FROM 
        information_schema.partitions
    WHERE 
        partition_name IS NOT NULL
    GROUP BY 
        table_schema, table_name, partition_method, partition_expression
) p ON t.table_schema = p.table_schema AND t.table_name = p.table_name
WHERE 
    t.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND t.table_type = 'BASE TABLE'
ORDER BY 
    t.table_schema, t.table_name;

查出表行数

bash 复制代码
SELECT 
    t.table_schema AS '数据库',
    t.table_name AS '表名',
    CASE 
        WHEN p.partition_method IS NULL THEN '普通表'
        ELSE CONCAT('分区表(', p.partition_method, ')')
    END AS '表类型',
    t.table_rows AS '估算行数',
    p.partition_expression AS '分区键'
FROM 
    information_schema.tables t
LEFT JOIN (
    SELECT DISTINCT 
        table_schema, 
        table_name,
        partition_method,
        partition_expression
    FROM 
        information_schema.partitions
    WHERE 
        partition_name IS NOT NULL
) p ON t.table_schema = p.table_schema AND t.table_name = p.table_name
WHERE 
    t.table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND t.table_type = 'BASE TABLE'
ORDER BY 
    t.table_schema, t.table_name;
相关推荐
倔强的石头_5 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
阿巴斯甜10 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker11 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952712 小时前
Andorid Google 登录接入文档
android
黄林晴13 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android