2

指定された列名を持たないテーブルを見つけようとしています:

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

これは非常に遅いです。それを改善する方法はありますか?

4

2 に答える 2

2

InnoDB テーブルを使用している場合は、グローバル変数 innodb_stats_on_metadata を 0 に設定します。デフォルトでは、テーブルのスキーマ情報にアクセスすると、InnoDB エンジンは統計を更新します。

于 2013-05-23T20:46:31.317 に答える
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)
于 2013-05-23T20:45:32.503 に答える