假定以下查询已发布到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引擎)将尝试尽可能快地获取存储的数据。
添加回答
举报
0/150
提交
取消