MySQL:如何找出数据库中没有主键的表
2,563 total views, 3 views today
工作中MySQL使用Innodb引擎时,创建表一定要加上主键(最好是无意义的auto increment列)。如果表没有主键和索引,且数据量很大,那么在主从复制时,从库上该表的dml操作不能根据主键和索引快速定位到操作的数据,只能采用全表扫描,速度非常缓慢。
因此,对于InnoDB而言,主键非常重要。
找出数据库中哪些表没有主键:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT t.table_schema, t.table_name, k.constraint_name, k.column_name FROM information_schema.tables t LEFT JOIN information_schema.key_column_usage k ON t.table_schema = k.table_schema AND t.table_name = k.table_name AND k.constraint_name = 'PRIMARY' WHERE t.table_schema NOT IN ( 'mysql', 'information_schema', 'performance_schema' ) AND k.constraint_name IS NULL AND t.table_type = 'BASE TABLE'; |