gpt4 book ai didi

Mysql Order BY 速度

转载 作者:行者123 更新时间:2023-12-05 01:34:48 29 4
gpt4 key购买 nike

有2个样本。

在第一个示例中,使用 orderby 可以更快地获得结果。 (根据 phpmyadmin 速度报告)

在另一个例子中,我没有使用 order by,它给出的结果较慢。 (根据 phpmyadmin 速度报告)

使用 Orderby 时,它给出快速结果是不是不合理?

排名对我来说并不重要,重要的是速度。

select bayi,tutar 
from siparisler
where durum='1' and MONTH(tarih) = MONTH(CURDATE()) and YEAR(tarih) = YEAR(CURRENT_DATE())
order by id desc

速度:0.0006

select bayi,tutar
from siparisler
where durum='1' and MONTH(tarih) = MONTH(CURDATE()) and YEAR(tarih) = YEAR(CURRENT_DATE())

速度:0.7785

最佳答案

order by 查询永远不会比没有 order by 子句的相同查询执行得更快。对行进行排序会给数据库带来更多的工作。在最好的情况下,排序变成空操作,因为 MySQL 首先以正确的顺序获取行:但这只是使两个查询在性能方面相等(它不会使排序更快的查询).

可能 order by 的结果已经被缓存了,所以 MYSQL 直接从缓存中给你结果而不是实际执行查询。

如果性能对您来说最重要,让我建议更改 where 谓词,以便不在 tarih 列上使用日期函数:这样的结构可以防止数据库利用索引(我们说谓词是不可 SARGable 的)。考虑:

select bayi, tutar 
from siparisler
where
durum = 1
and tarih >= dateformat(current_date, '%Y-%m-01')
and tarih < dateformat(current_date, '%Y-%m-01') + interval 1 month
order by id desc

对于此查询的性能,请考虑 (durum, tarih, id desc, bay, tutar) 上的索引:它应该表现为 覆盖索引,即 MySQL可用于执行整个查询,甚至无需查看实际数据。

关于Mysql Order BY 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63569946/

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