前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 排序操作的实现思路

Mysql 排序操作的实现思路

作者头像
dys
发布2018-04-02 16:35:17
7400
发布2018-04-02 16:35:17
举报
文章被收录于专栏:性能与架构性能与架构

在MySQL中,ORDER BY的实现有如下两种类型:

(1)通过有序索引直接取得有序的数据,不用进行任何排序操作即可满足客户端要求

(2)通过MySQL的排序算法将数据进行排序,再将排序后的数据返回给客户端

通过索引得到有序数据是最理想的,但实际情况中常常会遇到第二种情况

如果没有索引可利用时,MySQL又如何实现排序呢?

MySQL目前可以通过两种算法来实现数据的排序操作:

(1)取出满足过滤条件、并作为排序条件的字段,及其行指针信息,在Sort Buffer中进行实际的排序操作,然后根据行指针信息到表中取得其他字段的数据,再返回给客户端

(2)根据过滤条件,一次取出排序字段及需要的其他字段,并将不须要排序的字段存放在一块内存区域中,然后在 Sort Buffer中对排序字段进行排序,最后再用排序后的行指针到内存区域中找到其他字段,合并成结果集返回给客户端

第一种排序算法是MySQL一直以来就有的,而第二种则是从MySQL 4.1版本才开始增加的改进版排序算法。第二种的主要优势就是减少了数据的二次访问。在排序之后不须要再一次回到表中取数据,节省了IO操作。当然,会消耗更多的内存,这正是一种典型的通过内存空间换取时间的优化方式

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档