You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用`id in (max(id))`子查询时查询速度极慢问题排查

Aurora RDS(MySQL)子查询性能异常问题

近期将数据库从MariaDB迁移至AWS Amazon Aurora RDS(MySQL)后,发现一组查询存在性能异常:单独执行的两个子查询速度都很快,但嵌套为子查询时耗时大幅上升。其中id为表的主键。

测试情况

  • 执行语句 SELECT * FROM users where id in(SELECT max(id) FROM users where id = 1);,耗时约350ms
  • 执行语句 SELECT * FROM users where id in(SELECT id FROM users where id = 1);,耗时约130ms
  • 单独执行 SELECT max(id) FROM users where id = 1;,耗时约130ms
  • 单独执行 SELECT id FROM users where id = 1;,耗时约130ms

问题推测

我们推测该问题与max函数返回值的类型有关,导致外层查询忽略了主键索引。原查询包含更多过滤子句,涉及数亿行数据,且该问题在MariaDB中并未出现。


MariaDB下的执行结果

MariaDB中,上述两种嵌套子查询的执行计划均正常使用主键索引,性能表现一致,无明显耗时差异。

内容的提问来源于stack exchange,提问作者Jugal Thakkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:15:37