首页 > 数据库 >mysql中的排序

mysql中的排序

时间:2025-01-23 18:29:11浏览次数:3  
标签:命中 索引 升序 mysql 序列 排序 order

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

`mysql中排序底层逻辑

一、语法

select [column1], [clolumn2] from [database].[table] order by [order_column1] [desc/asc],[order_column2] [desc/asc]

二、场景

数据查询结果按照指定的排序列升序或降序排列,排序列值相同时按照后一列排序值进行排序,全部相同按照数据的物理顺序返回,如聚簇索引按照主键升序返回。

三、与其他语法结合

group by

进行分组查询数据,未指定按分组字段排序时,会按照物理顺序返回,结果会不符预期

limit offset

分页时如果未指定唯一的排序列,即存在排序列相等的记录,结果可能不稳定

四、排序底层流程

  1. 排序列是否命中索引
  2. 命中索引按照索引的结果进行排序
  3. 未命中索引会生成临时表
  4. 数据量小,临时表包含排序列与记录指针,通过指针回表
  5. 数据量大,临时表包含筛选记录的筛选列,直接返回

五、索引

校验是索引排序还是临时表排序

explain [sql], 结果中extra列存在 using filesort, 代表未使用索引排序

命中索引规则

最左前缀原则,排序列循序必须与索引顺序一致,同时不能升序降序混用

总结

标签:命中,索引,升序,mysql,序列,排序,order
From: https://blog.csdn.net/qq_41720354/article/details/145326865

相关文章

  • mysql中change buffer
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、changebuffer工作流程位置流程场景底层逻辑二、优缺点减少磁盘IO读取延迟多消耗内存三、启用场景四、配置innodb_change_buffer_max_sizeinnodb_change_buffering2.读入数据总结......
  • 如何系统优化MySQL【表结构优化、索引优化】(上篇)
    ......
  • PHP+MYSQL+HTML实现在线购物商城,基于php的电商系统,电子商务网站,零食购物商城
     一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购......
  • 初级黑客入门之sql注入报错分享(mssql+mysql),黑客技术零基础入门到精通实战教程!
    mysql溢出类bigint当超过mysql的整形的时候,就会导致溢出,mysql可能会将错误信息带出。这里user()是字母默认为0取反以后+1可能就会导致异常。报错特征BIGINTUNSIGNEDvalueisoutofrangein不需要函数,直接让他报错出来select%20(~(select%20\*%20from(select%2......
  • 深入理解 MySQL 锁机制
    MySQL锁机制全面指南在数据库领域,锁机制是确保数据一致性和并发控制的核心技术。MySQL作为一款广泛使用的关系型数据库管理系统,其锁机制以灵活性和强大性著称。在高并发场景下,合理地使用锁机制可以大幅提升系统的性能和可靠性。本文将详细解析MySQL的锁机制,包括锁的分类、应......
  • MySQL 集群 Cluster
    1.MySQL集群Cluster服务性能扩展方式ScaleUp,向上扩展,垂直扩展ScaleOut,向外扩展,横向扩展1.1MySQL主从复制1.1.1主从复制架构和原理1.1.1.1MySQL的主从复制读写分离复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制1.1.1.2复制的功用负载均......
  • MySQL存储过程和函数
    存储过程和函数函数与存储过程最大的区别就是函数调用有返回值,调用存储过程用call语句,而调用函数就直接引用函数名+参数即可创建存储过程和函数详解1234567891011121314151617181920212223242526272829303132333435363738394041......
  • MySQL触发器使用
    触发器触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用。 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。 作用......
  • failed: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib
    mysql连接时报以下这个错误CannotconnecttoMySQL:DBIconnect('jiwei;host=;port=3306;mysql_read_default_group=client','root',...)failed:Authenticationplugin'caching_sha2_password'cannotbeloaded:/usr/lib64/mysql/plugin/caching......
  • 34. 在排序数组中查找元素的第一个和最后一个位置
    给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。 示例1:输入:nums=[5,7,7,8,8,10],tar......