gpt4 book ai didi

删除订单时 MySQL 查询成本上升

转载 作者:行者123 更新时间:2023-11-30 21:54:16 25 4
gpt4 key购买 nike

Without Order With Order

我有两个正在运行简单查询的表。我遇到了一些性能问题,我注意到如果我通过删除 order by 来简化查询,解释计划实际上会变得更糟。我原以为解释计划会变得更好,因为我简化了查询,但恰恰相反。

我的问题是,为什么会发生这种情况?

Query cost with order by: 399,210.33
Query cost without order by: 648,450.33


SELECT count(alpha.id) AS object_value, bravo.company_id AS object_id
FROM alpha
INNER JOIN bravo ON alpha.bravo_id = bravo.id
WHERE alpha.completed_at >= date('2015-08-01') AND alpha.completed_at <= date('2017-08-10')
GROUP BY object_id
ORDER BY object_value desc;

mysql Ver 14.14 Distrib 5.7.19,适用于 osx10.11 (x86_64),使用 EditLine 包装器

Show Status with Order

Show Status without Order

最佳答案

EXPLAIN 和优化器统计数据是近似值

你有 INDEX(completed_at, bravo_id) 吗?它应该有助于提高性能。

这样重写查询:

SELECT  count(*) AS object_value,  -- no need to test alpha.id for not-NULL
bravo.company_id AS object_id
FROM alpha
INNER JOIN bravo ON alpha.bravo_id = bravo.id
WHERE alpha.completed_at >= '2015-08-01'
AND alpha.completed_at < '2015-08-01' + INTERVAL 9 DAY -- avoids extra second, leap calc, etc
GROUP BY object_id
ORDER BY object_value desc;

“处理程序”值是准确的; EXPLAIN 值是猜测值。

ORDER BY 可能没什么大不了的。结果集中有多少行?如果不是数百万,排序可能会在 RAM 中完成。

我希望 ORDER BY 需要第二次文件排序。哪里有任何 Handler...write 值?

是什么产生了图形输出?它是否符合 EXPLAIN FORMAT=JSON SELECT ...

关于删除订单时 MySQL 查询成本上升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com