执行后查看innodb_rows_read,发现innodb_rows_read增加了1
mysql> show global status like 'innodb_rows_read';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Innodb_rows_read | 1027 |
+------------------+-------+
1 row in set (0.00 sec)
测试得出:
select sql_no_cache max(id) from testtable where number=98;
需要读取 number=98 的所有行,才能得到最大的id
select sql_no_cache id from testtable where number=98 order by id desc limit 1;
由于id是主键,number是第二索引,只需扫描1行即可得到最大的id
请慎用max()函数,特别是频繁执行的sql,若需用到可转化为测试中的 order by id desc limit 1
因为往往min()或者max()函数往往会造成全表扫描
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx