Mysql不加order by情況下的預設排序
阿新 • • 發佈:2022-04-01
格式化版
https://www.wolai.com/rczaUkHDcrJTDta5cRwcUo
測試前提
mysql8.0 innodb & tidb5.3
先說結論
預設排序取決於用上了什麼索引,用上什麼索引出來的就是什麼排序,和插入順序無關
測試
CREATE TABLE `test` ( `id` int NOT NULL AUTO_INCREMENT, `a` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, `b` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `c` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `index_c` (`c`), KEY `index_a` (`a`), KEY `index_b` (`b`) ) ENGINE=InnoDB AUTO_INCREMENT=30002 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; INSERT INTO `zzw_test`.`test`(`id`, `a`, `b`, `c`) VALUES (1, 'a', 'b', 4); INSERT INTO `zzw_test`.`test`(`id`, `a`, `b`, `c`) VALUES (3, 'c', 'c', 5); INSERT INTO `zzw_test`.`test`(`id`, `a`, `b`, `c`) VALUES (5, 'b', 'a', 1); INSERT INTO `zzw_test`.`test`(`id`, `a`, `b`, `c`) VALUES (4, 'd', 'd', 6);
使用主鍵索引
使用a索引
使用b索引
使用c索引