Mysql数据库Innodb引擎读取最大id的方式

InnoDB引擎,12个字段,10万条数据的表,查询最大id,前者比后者更好?
我的理解是Myisam引擎存储了行数,所以读取单个值快,
本例中Innodb引擎,使用了max函数,原以为order limit更快,
根据实验结果max的执行计划 Select tables optimized away
查看执行时间,看不出太大差别,随便用哪种吧。

SELECT max(id) FROM table;

SELECT id FROM table ORDER BY id DESC LIMIT 1;

图一

图二

图三

官方解释:
https://dev.mysql.com/doc/refman/8.0/en/explain-output.html

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

我100万 rows 测试, 看不到很大分别

1年前 评论
becage (楼主) 1年前

我理解出现这个问题的原因是id本身是主键,而主键索引是聚簇索引,本身就是排序状态,max和min这类聚合根本不需要额外的优化查询,楼主可以试试max其他字段,我觉得结果应该会不一样

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!