在SELECT
时如果没有显式的添加ORDER BY
条件, MySQL会按什么顺序返回结果呢?
是按 PK 再 UNIQUE INDEX 的顺序吗?
那可不一定哦!
环境: win10 + MySQL 8.0.27
这里只讨论 InnoDB, 如果你想看 MyISAM, 请自行研究
来看一个实际发生的例子。我们建一个省份的表(省份名称唯一),然后存入几个省份名称(这里用的加拿大的),完整代码如下:
USE `test`;
CREATE TABLE `provinces`(
`province_id` smallint NOT NULL AUTO_INCREMENT COMMENT '省份id',
`province_name` varchar(50) NOT NULL COMMENT '省份, 必须唯一',
PRIMARY KEY(`province_id`)
) ENGINE=InnoDB;
-- 添加唯一索引
ALTER TABLE `provinces`
ADD UNIQUE INDEX `UK_provinceName`(`province_name`);
-- 填充测试数据
INSERT INTO `provinces`(`province_name`