mysql添加联合索引之后排序发生变化。
create table sys_follow(
id bigint UNSIGNED primary key,
biz_id BIGINT UNSIGNED not null,
status TINYINT(4) DEFAULT 0,
creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
insert into sys_follow(id,biz_id,status) VALUES(1,21,1)
insert into sys_follow(id,biz_id,status, creation_time) VALUES(2,21,0, '2024-10-21 11:11:11')
select * from sys_follow where biz_id = 21;
在未创建索引的情况下,是按照id升序排列。
create index idx_biz_id_status on sys_follow(biz_id,status);
select * from sys_follow where biz_id = 21;
在创建完这条索引之后,将会按照 id 降序排列。除非手动指定 order by id asc .
请问这是什么原因导致的呢?
找不到具体原因。
创建了联合索引 idx_biz_id_status 后,MySQL 优化器会选择使用这个索引来加速查询。由于索引是按照 biz_id 和 status 排序的,查询结果会受到索引顺序的影响。