为了账号安全,请及时绑定邮箱和手机立即绑定

“ SELECT * FROM table_name;”的MySQL行顺序是什么?

“ SELECT * FROM table_name;”的MySQL行顺序是什么?

鸿蒙传说 2019-11-02 10:45:20
假定以下查询已发布到MySQL数据库:SELECT * FROM table_name;注意,没有 ORDER BY给出任何子句。我的问题是:MySQL是否能保证结果集行的顺序?更具体地说,我是否可以假定行将按插入顺序返回?即行插入表的顺序相同。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

你不能。


有时,MySQL会使用不需要的键来执行选择查询。考虑此表:


CREATE TABLE `user_permissions` (

  `permId` int(5) unsigned NOT NULL AUTO_INCREMENT,

  `permKey` varchar(16) NOT NULL,

  `permDesc` varchar(64) DEFAULT NULL,

  PRIMARY KEY (`permId`),

  KEY `key_lookup` (`permKey`,`permId`,`permDesc`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

MySQL几乎总是使用该key_lookup键在此表上执行任何选择操作。由于permKey是第一个字段,因此通常会以此键“排序”(该键按字母顺序显示,但不完全相同)。


如果没有ORDER BY子句,MySQL(和大多数/所有RDBMS引擎)将尝试尽可能快地获取存储的数据。


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 768 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信