当前位置: 首页 > news >正文

【一次记一句:SQL】从 information_schema.TABLES中查询数据库表中记录数据量

有时候,一张千万数据量的表,使用 count(*) 统计记录数,查不动。可以使用下述SQL来试试:

SELECT CONCAT(table_schema, '.', table_name) AS "Table Name", table_rows AS "Number of Rows", CONCAT(ROUND(data_length / (1024 * 1024 * 1024), 6), ' G') AS "Data Size", CONCAT(ROUND(index_length / (1024 * 1024 * 1024), 6), ' G') AS "Index Size", CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024), 6), ' G') AS "Total"
FROM information_schema.TABLES
WHERE table_schema LIKE 'infodb'
ORDER BY Total + 0 DESC;

这个SQL查询的目的是从MySQL的information_schema.TABLES视图中检索出特定数据库(在这个例子中是名为infodb的数据库)中所有表的信息,包括表名、行数、数据大小、索引大小和总大小(数据和索引的总和),并将这些信息以易于阅读的格式显示出来。

查出的结果类似于:

TableNameNumber of RowsData SizeIndex SizeTotal
infodb.pay_jnl5356381717.412125 G6.241241 G23.653366 G
infodb.user30801740.419922 G0.588455 G1.008377 G

查询语句详细解释:

1. 选择字段:

  • CONCAT(table_schema, ‘.’, table_name) AS “Table Name”: 将数据库名(table_schema)和表名(table_name)通过.连接起来,作为“Table Name”列显示。
  • table_rows AS “Number of Rows”: 直接显示表的行数,作为“Number of Rows”列。
  • CONCAT(ROUND(data_length / (1024 * 1024 * 1024), 6), ’ G’) AS “Data Size”: 将data_length(以字节为单位的数据大小)转换为GB,并保留6位小数,然后添加’ G’作为单位,作为“Data Size”列显示。
  • CONCAT(ROUND(index_length / (1024 * 1024 * 1024), 6), ’ G’) AS “Index Size”: 类似地,将索引大小(index_length)转换为GB,并显示为“Index Size”列。
  • CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024), 6), ’ G’) AS “Total”: 将数据大小和索引大小相加,然后转换为GB,并显示为“Total”列。

2. 筛选条件:

  • WHERE table_schema LIKE ‘infodb’: 只选择table_schema字段值为infodb的记录,即只查询infodb数据库中的表。

3. 排序:

  • ORDER BY Total + 0 DESC;: 这里通过Total + 0(实际上是对Total列进行隐式类型转换,确保它可以用于排序)来按“Total”列的值降序排序。这样,总大小最大的表会首先显示。

注意:table_rows字段在某些情况下可能不是一个完全准确的行数,因为它是一个估计值,特别是对于使用了InnoDB存储引擎的表。如果需要精确的行数,可能需要使用其他方法,如COUNT(*)查询。

此外,这个查询假设数据库服务器有足够的权限来访问information_schema.TABLES视图。如果没有,查询将失败。


以上就是 从 information_schema.TABLES中查询数据库表中记录数据量 的全部内容,感谢阅读!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • win安装mysql
  • windows中使用Jenkins打包,部署vue项目完整操作流程
  • Linux驱动开发-06蜂鸣器和多组GPIO控制
  • pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示
  • uniapp小程序项目解决键盘问题
  • 无人机的发展前景大吗?
  • 23种设计模式之命令模式
  • Python(re模块的具体使用)
  • QT通用配置文件库(QPreferences)
  • 【云原生】Prometheus整合Alertmanager告警规则使用详解
  • [集成学习]基于python的Stacking分类模型的客户购买意愿分类预测
  • CentOS 7 yum官方源失效
  • 分布式ID是什么?有哪些解决方案?
  • 准备跳槽了(仍然底层为主,ue独立游戏为辅)
  • 贝叶斯算法理论
  • 【Linux系统编程】快速查找errno错误码信息
  • 2017-09-12 前端日报
  • Android组件 - 收藏集 - 掘金
  • Angularjs之国际化
  • Netty源码解析1-Buffer
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue 重置组件到初始状态
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云前端周刊 - 第 26 期
  • 百度小程序遇到的问题
  • 读懂package.json -- 依赖管理
  • 近期前端发展计划
  • 区块链分支循环
  • 删除表内多余的重复数据
  • 算法-图和图算法
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 自定义函数
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​2020 年大前端技术趋势解读
  • ​Spring Boot 分片上传文件
  • # Apache SeaTunnel 究竟是什么?
  • ###项目技术发展史
  • (20050108)又读《平凡的世界》
  • (SERIES12)DM性能优化
  • (ZT)一个美国文科博士的YardLife
  • (笔试题)分解质因式
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (十三)MipMap
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)视频码率,帧率和分辨率的联系与区别
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃