Mysql不加order by情况下的默认排序

格式化版

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索引

 

 

posted @ 2022-04-01 17:04  MRLL  阅读(368)  评论(0编辑  收藏  举报