知识大全 MySQL在有索引列情况下select *的输出结果顺序

Posted 索引

篇首语:疾风知劲草,板荡识诚臣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL在有索引列情况下select *的输出结果顺序相关的知识,希望对你有一定的参考价值。

MySQL在有索引列情况下select *的输出结果顺序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  创建一个表格 一个是主键列 一个是索引列 然后插入一批数据 调用select * from test_b 可以发现输出结果并没有按照Id有序 而是按照Type有序

  如果希望按照Id有序 可以使用force index (primary)这一hint语句

  mysql> CREATE TABLE `test_b` (

   > `Id` int( ) NOT NULL

   > `Type` int( ) DEFAULT NULL

   > PRIMARY KEY (`Id`)

   > KEY `IDX_Type` (`Type`)

   > ) ENGINE=InnoDB DEFAULT CHARSET=utf ;

  Query OK rows affected ( sec)

  mysql> insert into test_b values( ) ( ) ( ) ( ) ( );

  Query OK rows affected ( sec)

  Records: Duplicates: Warnings:

  mysql> select * from test_b;

  + + +

  | Id | Type |

  + + +

  | | |

  | | |

  | | |

  | | |

  | | |

  + + +

   rows in set ( sec)

  mysql> select * from test_b force index (primary);

  + + +

  | Id | Type |

  + + +

  | | |

  | | |

  | | |

  | | |

  | | |

  + + +

   rows in set ( sec)

  观察select * from test_b的前两条结果 ( ) ( ) 当Type相等的时候 按照Id排序 为了确认这一点 再多插入点数据观察 结论相同

  mysql> insert into test_b values( ) ( ) ( );

  Query OK rows affected ( sec)

  Records: Duplicates: Warnings:

  mysql> select * from test_b ;

  + + +

  | Id | Type |

  + + +

  | | |

  | | |

  | | |

  | | |

  | | |

  | | |

  | | |

  | | |

  + + +

   rows in set ( sec)

  默认情况下为什么会结果按照索引列有序呢?这还要从数据库内部的运行机制说起 首先系统会查询索引表(test_b_indexed_type) 该索引表的主键是索引列type(通常为了保证主键唯一性 type后面会添加一个id后缀) 通过索引列查到Id 然后拿着这些Id去test_b中查询最终结果 为了最高效 扫描索引表的时候会顺着type主键往下扫 然后拿扫得的id去“逐个”请求test_b 于是自然就出现了按照索引列有序的结果

cha138/Article/program/MySQL/201311/29567

相关参考

在下列()情况下,协调控制系统应闭锁减少负荷指令:

在下列()情况下,协调控制系统应闭锁减少负荷指令:A、一次风压高B、汽包水位高C、燃料主控器输出到下限D、炉膛压力低参考答案:BC

知识大全 快速掌握MySQL数据库中SELECT语句[1]

快速掌握MySQL数据库中SELECT语句[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 快速掌握MySQL数据库中SELECT语句[2]

快速掌握MySQL数据库中SELECT语句[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 讲解MySQL索引的概念及数据库索引的应用[1]

数据库基础:讲解MySQL索引的概念及数据库索引的应用[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 讲解MySQL索引的概念及数据库索引的应用[2]

数据库基础:讲解MySQL索引的概念及数据库索引的应用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 加速PHP动态网站 关于MySQL索引分析优化

加速PHP动态网站关于MySQL索引分析优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文

知识大全 mysql联结操作符

  逗号关联操作符的效果与INNERJOIN相似  [sql]  select t*t*fromttwhereti=ti;  等价于  [sql]  select t*t*from

知识大全 oracle 11g 收集统计信息的新特点介绍

  对组合列创建统计信息  检查表结构  select*fromscottempwhere=;  创建虚拟列会输出虚拟列名  selectdbms_statscreate_extended_stats

知识大全 在有什么病的情况下不能吃香椿芽

在有什么病的情况下不能吃香椿芽中医认为,香椿多走肝经,可以助阳,所以一般阳虚的人吃香椿是有好处的。但是相对的,如果过于严厉对待某人人吃了香椿后容易加重肝火,尤其是像糖尿病患者这样属于阴虚、燥热的患者,

知识大全 一列电子表格中怎样放弃空格在有文字单元格自动编号

一列电子表格中怎样放弃空格在有文字单元格自动编号若你的资料在A列,我们想在B列里显示非空资料的编号!在B1里写公式:=IF(A1="","",COUNTA(A$1:A1))按住B1单元格右下角的实心十