如何使用information_schema加速mysql查询

时间:2013-05-23 20:42:14

标签: mysql

我正在尝试查找没有指定列名的表:

select t.table_name
from information_schema.tables as t
  left join information_schema.columns as c
    on t.table_name=c.table_name
      and c.column_name='some_name'
where c.column_name is null

这非常非常慢。有没有办法改善它?

2 个答案:

答案 0 :(得分:2)

如果您使用的是InnoDB表,请将全局变量:innodb_stats_on_metadata设置为0.默认情况下,InnoDB引擎将在访问其表的架构信息时更新统计信息。

答案 1 :(得分:1)

您可以尝试使用EXISTS:

SELECT t.table_name
FROM information_schema.table as t
WHERE NOT EXISTS (SELECT 1 FROM information_schema.columns c 
                  WHERE c.table_name = t.table_name)