如何检索特定数据库的表名和行数?
就像我的数据库名称是xyz。 XYZ数据库我想获取特定表的所有表和记录数。
SELECT status.real_name AS“real_name”,status.friendly_name AS“friendly_name”,table_rows AS“quant_of_rows”,ROUND((data_length + index_length)/ 1024 / 1024,2)AS“total_size_mb”FROM information_schema.TABLES RIGHT JOIN table_status ON status.real_name = information_schema.TABLES.TABLE_NAME WHERE information_schema.TABLES.table_schema ='database_name';
此查询显示4列。
我遇到了第3栏的问题。对于InnoDB表,table_rows只是SQL优化中使用的粗略估计。
我可以使用类似这样的东西代替table_rows吗?
(select count(*) from information_schema.TABLES.TABLE_NAME) AS "Quant_of_Rows"
为数据库获取table_row的其他方法是什么?
答案 0 :(得分:1)
像this?之类的东西还是我错过了这一点?
- 皮特
答案 1 :(得分:0)
SHOW TABLE STATUS
并且看"名称"和"行"列
答案 2 :(得分:0)
@temp_table = []
ActiveRecord::Base.connection.tables.each do |table|
count = ActiveRecord::Base.connection.execute("SELECT COUNT(*) as count FROM #{table}").fetch_hash['count']
size = ActiveRecord::Base.connection.execute("SHOW TABLE STATUS LIKE '#{table}'").fetch_hash
@temp_table << {:table_name => table,
:records => count.to_i,
:size_of_table => ((BigDecimal(size['Data_length']) + BigDecimal(size['Index_length']))/1024/1024).round(2)
}
end
end