【发布时间】:2022-01-12 22:37:16
【问题描述】:
在包含 JSON 列的表的 SELECT 语句上使用 LIMIT OFFSET 时,我发现性能很慢。
以下查询需要 3 分钟才能完成:
SELECT t.json_column
FROM table t
LIMIT 501
OFFSET 216204;
但是,如果我只选择t.id,则查询只需要几毫秒。
只有当 JSON 列是 SELECT 语句的一部分时,性能缓慢才可见,但我不明白为什么,或者我可以做些什么来改进它。
为了提供更多上下文,我使用的 MySql 版本是 5.7,该服务在 AWS Aurora 数据库上运行,表上的行数约为 216.000
【问题讨论】:
-
如果您不提供订单依据,则无法保证您的结果将采用什么顺序,或者两个查询之间的顺序相同,因此您的限制和偏移量毫无意义。你能提供一个更接近你实际在做什么的例子吗?
-
请包含两个查询的执行计划。
-
如果不能比较执行计划,这个讨论是没有结果的。投票结束。
-
@TheImpaler - 如果您见过
EXPLAIN和LIMIT,那么您已经全部见过。而且您会知道EXPLAIN几乎是无用的。 -
是否有人真正通过大约 400 行来获得此查询?请说明您是如何获得该查询的。
标签: mysql query-optimization amazon-rds amazon-aurora