猿问

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

假定以下查询已发布到MySQL数据库:


SELECT * FROM table_name;

注意,没有 ORDER BY给出任何子句。


我的问题是:


MySQL是否能保证结果集行的顺序?


更具体地说,我是否可以假定行将按插入顺序返回?即行插入表的顺序相同。


鸿蒙传说
浏览 769回答 3
3回答

慕莱坞森

你不能。有时,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引擎)将尝试尽可能快地获取存储的数据。
随时随地看视频慕课网APP

相关分类

MySQL
我要回答