假定以下查詢已發(fā)布到MySQL數(shù)據(jù)庫:SELECT * FROM table_name;注意,沒有 ORDER BY給出任何子句。我的問題是:MySQL是否能保證結(jié)果集行的順序?更具體地說,我是否可以假定行將按插入順序返回?即行插入表的順序相同。
3 回答

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
你不能。
有時,MySQL會使用不需要的鍵來執(zhí)行選擇查詢??紤]此表:
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鍵在此表上執(zhí)行任何選擇操作。由于permKey是第一個字段,因此通常會以此鍵“排序”(該鍵按字母順序顯示,但不完全相同)。
如果沒有ORDER BY子句,MySQL(和大多數(shù)/所有RDBMS引擎)將嘗試盡可能快地獲取存儲的數(shù)據(jù)。
添加回答
舉報
0/150
提交
取消