当前位置: 首页 > 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中查询数据库表中记录数据量 的全部内容,感谢阅读!

http://www.lryc.cn/news/403461.html

相关文章:

  • NXP i.MX8系列平台开发讲解 - 3.19 Linux TTY子系统(二)
  • FPGA资源容量
  • Zabbix介绍和架构
  • 打造智慧图书馆:AI视频技术助力图书馆安全与秩序管理
  • Go的数据结构与实现【LinkedList】
  • Ubuntu22.04安装CUDA+CUDNN+Conda+PyTorch
  • 当“广撒网”遇上“精准定点”的鱼叉式网络钓鱼
  • svn ldap认证临时切换到本地认证
  • 极狐GitLab如何配置使用独立数据库?
  • TCP状态转换详解
  • SimMIM:一个类BERT的计算机视觉的预训练框架
  • 数据精度丢失
  • Element UI DatePicker选择日期范围区间默认显示前一个月和本月
  • C++:聚合类、嵌套类、局部类、union类详细介绍与分析
  • MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统
  • C++:左值/右值引用、移动语义/std::move、万能引用/完美转发std::forward 详解
  • 蜂窝物联云平台:一站式服务,智能生活从此开始!
  • 【中项】系统集成项目管理工程师-第3章 信息技术服务-3.3服务生命周期
  • 【iOS】——消息传递底层实现
  • PostgreSQL数据库从入门到精通系列之十:表空间、索引表空间、创建表空间、创建索引空间、创建分区表、创建分区表的分区、创建指定表空间、索引表空间的分区表
  • 恶补,先验分布,后验分布 ,似然估计
  • JS之数组中的reduce方法
  • 在win10上通过WSL和docker安装Ubuntu子系统,并配置Ubuntu可成功使用宿主机GPU
  • python需要掌握那些语法
  • CentOS Mysql8 数据库安装
  • 新手教程---python-函数(新添加)
  • Windows tasklist命令详解,Windows查看进程
  • 数据结构——线性表(循环链表)
  • 深度剖析机构号矩阵系统:如何根据业务需求做出明智选择
  • go语言的基础语法