600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mysql查询正序 MySQL中一条排序语句order – 数据库 – 前端 mysql 管理表

mysql查询正序 MySQL中一条排序语句order – 数据库 – 前端 mysql 管理表

时间:2023-07-20 02:55:04

相关推荐

mysql查询正序 MySQL中一条排序语句order – 数据库 – 前端 mysql 管理表

比如对于以下的查询,无法发挥索引的最佳性能。

查询一:select * from tb1 where f1 = … order by id desc;查询二:

2. select * from tb1 where f1 = … order by f1 asc , f2 desc;

那对于上面的查询,尤其是数据量和并发到一定峰值的时候,则对OS的资源消耗非常大。一般这样的SQL在查询计划里面会出现using filesort等状态。

比如针对下面的表t1,针对字段rank1有两个索引,一个是正序的,一个是反序的。不过在MySQL 8.0 之前的版本都是按照正序来存储。

按照rank1 正向排序的执行计划,

按照rank1 反向排序的执行计划,

从执行计划来看,反向比正向除了extra里多了Using temporary; Using filesort这两个,其他的一模一样。这两个就代表中间用到了临时表和排序,一般来说,凡是执行计划里用到了这两个的,性能几乎都不咋地。除非偶这个临时表不太大,而用于排序的buffer也足够大,那性能也不至于太差。那这两个选项到底对性能有多大影响呢?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。