get db表中的列利用率

toiithl6  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(358)

在浏览一些数据库时,我考虑了正确的数据库设计,在这些数据库中,150000条记录中,有些列只设置了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} ')
h6my8fg2

h6my8fg21#

我希望得到一个更好的答案,尽管来吧。将输出复制并粘贴到此处,然后删除最终的并集

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

相关问题