如何从特定数据库中检索具有行数的表名?
Posted
技术标签:
【中文标题】如何从特定数据库中检索具有行数的表名?【英文标题】:How can i retrieve table names with rows count from specific database? 【发布时间】:2011-03-31 09:23:53 【问题描述】:如何检索特定数据库的表名和行数?
就像我的数据库名称是 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 的其他方法是什么?
【问题讨论】:
【参考方案1】:this? 之类的东西还是我没抓住重点?
--皮特
【讨论】:
【参考方案2】:SHOW TABLE STATUS
并查看“名称”和“行”列
【讨论】:
【参考方案3】: @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
【讨论】:
以上是关于如何从特定数据库中检索具有行数的表名?的主要内容,如果未能解决你的问题,请参考以下文章