在浏览某些数据库时,我正在考虑适当的数据库设计,这些数据库在150,000条记录中,某些列仅设置了5-20个值。我想到应该将利用率低的列转移到数据透视表,并希望运行一个报告,告诉我要评估哪个。
我尝试了一次foreach,但对我来说不起作用。有提示吗?
foreach('SELECT table_name,
column_name
FROM information_schema.columns
WHERE table_schema = "mydb"',
'SELECT ${2}, utilization
FROM mydb.${1}.${2}
LEFT JOIN
(
SELECT sum(secondary_email)/count(*) AS utilization
FROM (
SELECT
CASE
WHEN secondary_email IS NULL THEN 0
ELSE 1
END AS secondary_email
FROM offices ) AS c )
GROUP BY ${2} ')
答案 0 :(得分:0)
我希望有一个更好的答案,请随时在这里帮我。将输出复制并粘贴到此处,然后删除最终的UNION ALL
SELECT
CONCAT('SELECT ', QUOTE(tb), ', ',QUOTE(col),', sum(`has_value`)/count(*) AS utilization FROM (SELECT CASE WHEN `',col,'` IS NULL THEN 0 ELSE 1 END AS has_value FROM ',tb,' ) AS c UNION ALL') SearchSQL
FROM
(
SELECT table_schema db,table_name tb,column_name col FROM information_schema.columns
WHERE table_schema = 'myDB' AND
(column_type LIKE 'char(%' OR column_type LIKE 'varchar(%' OR column_type LIKE '%text')
) A