有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/