SQL优化(3):order by优化

这篇具有很好参考价值的文章主要介绍了SQL优化(3):order by优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL的排序,有两种方式:

Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。

Using index : 通过有序索引顺序扫描直接返回有序数据,这种情况即为 using index,不需要额外排序,操作效率高。

对于以上的两种排序方式,Using index的性能高,而Using filesort的性能低,我们在优化排序操作时,尽量要优化为 Using index。

接下来,我们来做一个测试:

找一张没有建立索引的表

1 执行排序SQL

explain select id,age,phone from tb_user order by age ;

SQL优化(3):order by优化

explain select id,age,phone from tb_user order by age, phone ;

SQL优化(3):order by优化

由于 age, phone 都没有索引,所以此时再排序时,出现Using files文章来源地址https://www.toymoban.com/news/detail-429245.html

到了这里,关于SQL优化(3):order by优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解

    SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下: 其中, column1 , column2 ,等是您要从表中选择的字段名称,而 table_name 是您要选择数据的表的名称。 如果要选择表中的所有列,您可以使用 SELECT * 语法。 以下是一些示例: 从Customers表中选择 CustomerName 和 Ci

    2024年02月05日
    浏览(55)
  • MySQL Execution Plan -- IN条件与ORDER BY组合优化

    MySQL版本: 5.7.27-30-log Percona Server (GPL), wsrep_31.39 涉及表结构: 涉及SQL: 在系统没有任何压力情况下,该SQL执行时间超过200ms。 查看SQL对应执行计划: 查看满足WHERE条件数据: 通过profiling查看耗时情况: 根据profiling结果可以发现99.9%的耗时在 Creating sort index 环节,查询条件中

    2024年02月14日
    浏览(38)
  • 【MySQL】union (all) 后 order by 子查询排序不生效问题解决方案

    2308. 按性别排列表格 表:Genders Column Name Type user_id int gender varchar user_id 是该表的主键(具有唯一值的列)。 gender 的值是 ‘female’,‘male’,‘other’ 之一。 该表中的每一行都包含用户的 ID 及其性别。 表格中 ‘female’,‘male’,‘other’ 数量相等。 编写一个解决方案以重新

    2024年01月17日
    浏览(53)
  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

    使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 默认按升序排序。要按降序排序结果,使用 DESC 。 示例按名称按字母顺序排序结果: ORDER BY DESC 使用 DESC 以降序排序结果。 示例按名称以字母逆序排序结果: 您可以使用\\\"DELETE FROM\\\"语句从现有表格中

    2024年02月05日
    浏览(73)
  • 玩转Mysql系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑

    这是Mysql系列第7篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 本章内容 详解排序查询 详解limit limit存在的坑 分页查询中的坑 排序查询(order by) 电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此

    2024年02月11日
    浏览(40)
  • mysql语句中order by的查询速度太慢 请问需要做出哪些优化策略来提升查询速度...

    如果在MySQL中使用 order by 语句导致查询速度过慢,可以考虑以下优化策略: 使用索引:为排序字段建立索引可以提高查询速度。 增加内存:如果服务器内存不足,MySQL可能需要使用临时表或磁盘排序,增加内存可以避免这种情况。 减少数据量:使用 limit 语句可以限制结果集

    2024年02月13日
    浏览(45)
  • Mybatis ORDER BY 排序失效 & ORDER BY 与 CASE WHEN THEN 排序问题

    如果传递给 mapper 的参数值是以 #{test_参数} 的形式,那么就会报错 具体如下: 传递参数是 name 排序规则是升序 asc ORDER BY 后 使用 #{ } 获取参数值,运行后,会报错的,必须改成 ${ } ,井号改成 美元符号。 如下所示: 数据库表 test_table 的真实字段名: test_id 测试参数值:

    2024年02月11日
    浏览(48)
  • SQL ORDER BY 关键字

    ORDER BY 用于对结果集进行排序。 ORDER BY 用于对结果集按照一个列或者多个列进行排序。 ORDER BY 默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 。 ORDER BY 子句后面的列名指示按哪些列进行排序。如果您指定多个列

    2024年02月16日
    浏览(42)
  • Mybatis xml中排序(order by)条件用#{}查询失败

    问题描述: 处理简单分页时,发现从外部传入的排序条件无法生效,但程序无报错,正常返回列表,只是排序条件不对; 原因: #{}表示一个占位符,当#{}传入的数据是一个字符串时,会自动将传入的数据加一个双引号。 解决方法: 使用${}将传入的数据直接显示生成在sql中

    2024年01月17日
    浏览(40)
  • [SQL挖掘机] - ORDER BY语句

    当您想对查询结果进行排序时,可以使用 ORDER BY 子句。ORDER BY 子句允许您按照一个或多个列的值对结果进行排序。 在上述语法中,我们首先指定要选择的列,并在 order by 子句中指定要排序的列。可以同时指定多个列,它们将按照指定的顺序逐个排序。 其中, asc 表示升序排序

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包