【发布时间】:2014-02-04 02:41:15
【问题描述】:
在 MySQL 中,我尝试使用 Information Schema 来收集有关我的表的数据。我的目标是在一个查询中选择数据并将其直接插入到另一个表中以供将来分析和处理。
这是我写的一个查询。不幸的是,大多数时候 pk_length(主键中的列数)不正确,有时表上的键数也是错误的。
SELECT
t.table_schema,
t.table_name,
SUM(k.constraint_name="PRIMARY") as pk_length,
count(distinct s.index_name) as key_count,
t.table_rows
FROM tables t, statistics s, key_column_usage k
WHERE t.table_name = s.table_name
AND t.table_schema = s.table_schema
AND t.table_name = k.table_name
AND t.table_schema = k.table_schema
GROUP BY t.table_schema, t.table_name;
我做错了什么导致这两个字段的数据不正确?
编辑:这是使用子查询的固定查询。
SELECT
t.table_schema,
t.table_name,
k.pk_length,
count(distinct s.index_name) as key_count,
t.table_rows
FROM tables t,
statistics s,
(SELECT table_schema, table_name, count(*) as "pk_length"
FROM key_column_usage group by table_schema, table_name) as k
WHERE t.table_name = s.table_name
AND t.table_schema = s.table_schema
AND t.table_name = k.table_name
AND t.table_schema = k.table_schema
GROUP BY t.table_schema, t.table_name
LIMIT 20;
【问题讨论】: