广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    MySQL中Order By实现原理分析

    2018-04-13 09:17:53 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      下面将通过实例分析两种排序实现方式及实现图解:

      假设有 Table A 和 B 两个表结构分别如下:

    1 sky@localhost : example 01:48:21> show create table AG
    2 
    3 *************************** 1. row ***************************
    4 
    5 Table: A
    6 
    7 Create Table: CREATE TABLE `A` (
    8 
    9 `c1` int(11) NOT NULL default '0',
    10 
    11 `c2` char(2) default NULL,
    12 
    13 `c3` varchar(16) default NULL,
    14 
    15 `c4` datetime default NULL,
    16 
    17 PRIMARY KEY (`c1`)
    18 
    19 ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    20 
    21 sky@localhost : example 01:48:32> show create table BG
    22 
    23 *************************** 1. row ***************************
    24 
    25 Table: B
    26 
    27 Create Table: CREATE TABLE `B` (
    28 
    29 `c1` int(11) NOT NULL default '0',
    30 
    31 `c2` char(2) default NULL,
    32 
    33 `c3` varchar(16) default NULL,
    34 
    35 PRIMARY KEY (`c1`),
    36 
    37 KEY `B_c2_ind` (`c2`)
    38 
    39 ) ENGINE=MyISAM DEFAULT CHARSET=utf8

      1、利用有序索引进行排序,实际上就是当我们Query 的ORDER BY 条件和Query 的执行计划中所利用的Index的索引键(或前面几个索引键)完全一致,且索引访问方式为rang、ref 或者index的时候,MySQL可以利用索引顺序而直接取得已经排好序的数据。这种方式的ORDER BY 基本上可以说是最优的排序方式了,因为MySQL不需要进行实际的排序操作。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告