mysql多张数据表统计记录总数(thinkphp)

今天做一个小功能,统计几个数据表记录的条目总和。这几张表并没有相关联的字段。最简单的想法是count每个数据表的条目,然后将数字累加。但是这样要执行3次查询,效率比较低。
查了下资料,可以这样做:

USE information_schema;
SELECT table_name,table_rows FROM TABLES WHERE TABLE_SCHEMA = 'education' ORDER BY table_rows DESC;

education 为要统计的数据库名,table_name是表名,table_rows 是表的总条目,也可以在where 后面指定要统计的表名。
又看了几篇文章,都是复制黏贴。
无意找到一篇information_schema的介绍,引用其中的几段话: 
MySQL的information_schema数据库是什么,有什么作用?
  大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。
  information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
  在 MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

可我最想知道,怎么在php中用information_schema。既然它是个数据库,猜想是要有数据库配置才能访问,也就是说除了配置自己使用的主数据库,还要配置information_schema的连接方式。几番周折,发现没那么复杂,只配置一次主数据库就可以了。

在thinkphp中使用information_schema(php中也是一样的sql语句,只是查询数据库的方式不同罢了):

        $Model = new Model();
        $sql = "select table_rows FROM INFORMATION_SCHEMA.TABLES WHERE table_name in ('table1','table2','table3')";
        $result = $Model->query($sql);
        $rowCounts = 0;
        foreach ($result as $key => $value){
            $rowCounts += (int)$value["table_rows"];
        }

$rowCounts统计了几张表的总数目和,只是简单这么一句sql,感觉提升不少效率。简化了统计数据表总条目的流程,算是摸到了information_schema的一点点皮毛。以后应该花时间研究一下information_schema的使用方法,相信对数据的统计有很大的帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值