首页 > 数据库 >mysql中的found_rows() 与 row_count()函数

mysql中的found_rows() 与 row_count()函数

时间:2022-11-14 09:56:07浏览次数:45  
标签:count rows sec mysql found select row

1. found_rows()

found_rows()用于查询同一连接下,上一条执行select查询返回的行数,包括show 语句返回的行数。中间可以插入执行dml语句,返回依然是上一条select语句返回的行数。

mysql> select * from t6;
+----+------+------+
| id | k1   | k2   |
+----+------+------+
|  1 |    1 |    1 |
|  3 |    3 |    3 |
+----+------+------+
2 rows in set (0.05 sec)

mysql> insert into t6 values(4,4,4);
Query OK, 1 row affected (0.02 sec)

mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
|            2 |
+--------------+
1 row in set, 1 warning (0.00 sec)

 

使用sql_calc_found_rows 与 found_rows()组合,可以查询到去除limit限制后返回的总行数。

mysql> select sql_calc_found_rows * from test_t1 limit 3;
+------+------+
| ID   | C1   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|  100 |  100 |
+------+------+
3 rows in set, 1 warning (0.00 sec)

mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
|            8 |
+--------------+
1 row in set, 1 warning (0.00 sec)

上面的语句相当于执行:

mysql> select * from test_t1 limit 3;
+------+------+
| ID   | C1   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|  100 |  100 |
+------+------+
3 rows in set (0.01 sec)

mysql> select count(*) from test_t1;
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.00 sec)

因此使用sql_calc_found_rows 与 found_rows()组合相当于节省了一次查询count(*). 

不使用sql_calc_found_rows ,只使用found_rows()返回的是上一条select语句返沪的实际行数。

 

2. row_count()

row_count()查询同一连接上一条dml语句返回的行数,中间不能穿插其他select语句。如果有其他语句,结果返回-1。

 

mysql> insert into t6 values(4,4,4);
Query OK, 1 row affected (0.02 sec)

mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
|            2 |
+--------------+
1 row in set, 1 warning (0.00 sec)

mysql> select row_count();
+-------------+
| row_count() |
+-------------+
|          -1 |
+-------------+
1 row in set (0.01 sec)

mysql> update t6 set k1=2 ;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select row_count();
+-------------+
| row_count() |
+-------------+
|           3 |
+-------------+
1 row in set (0.00 sec)

 

标签:count,rows,sec,mysql,found,select,row
From: https://www.cnblogs.com/JennyYu/p/16888090.html

相关文章

  • ubuntu安装 MySql5.7.bundle.tar
    1.查询是否有残留软件rpm-qa|grepmysqlrpm-qa|grepmariadb2.上传解压并安装root@kht:/kht#tar-xvfmysql-5.7.40-1.el7.x86_64.rpm-bundle.tarmysql-communi......
  • MySQL 通过 binlog 日志恢复数据
    binlog日志,即binarylog,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日......
  • mysql benchmark
    数据库创建用户密码数据库,字段值均为benchmark。安装sysbench,执行命令。测试结果:#u-ubuntu-vmexportMYSQL_HOST=192.168.1.10#准备数据sysbench--db-driver=my......
  • MySQL高级6【MVCC-其他日志-主从复制-备份与恢复】尚硅谷
    【第16章多版本并发控制】1.什么是MVCCMVCC(MultiversionConcurrencyControl),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这......
  • Ubuntu 20.04 安装部署 MySQL 8.0
    1.规划官网:MySQL社区官网,下载包需要创建oracle账户,本地使用的是Linux通用的二进制包mysql-8.0.31-linux-glibc2.12-x86_64.tarmd5:89e902edeb75216c366e878f3c9e85be......
  • MySQL优化
    一、       MySQL数据库-SQL优化MySQLDBMS-MySQLDatabaseManagementSystem。数据库管理系统。1       结构图   2       MySQL......
  • 使用MySQL时出现The server time zone value '�й���׼ʱ��' is unrecogni的解决方法
    问题:Causedby:com.mysql.cj.exceptions.InvalidConnectionAttributeException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanoneti......
  • MySQL数据库连接参数
    数据库连接参数driver-class-name:com.mysql.cj.jdbc.Driver//&serverTimezone=GMT%2B8连接使用的时区,一般是MySQL8+版本使用的url:jdbc:mysql://localhost:3306/......
  • DTOJ 5932 Counting 题解
    题目链接portal题解认识到了生成函数很好用,于是摆了一篇题解10分直接dp,\(f_{i,j}\)表示走了\(i\)步之后,当前位置在\(j\)的方案数然后就有状态转移方程\(f_{i,......
  • CF1748E Yet Another Array Counting Problem 题解
    可能更好的阅读体验题目传送门题目大意给定一个长度为\(n\)的序列\(a\)和\(m\),定义\([l,r]\)的最左边的最大值为最小的\(l\lei\ler\)满足\(x_i=\max\{a_......