前言
MySQL 8.0终于支持降序索引了。其实,从语法上,MySQL 4就支持了,但正如官方文档所言,”they are parsed but ignored”,实际创建的还是升序索引。
无图无真相,同一个建表语句,看看MySQL 5.7和8.0的区别。
create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));
MySQL 5.7
mysql> show create table slowtech.t1
什么是降序索引
大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集。
我们通常使用下面的语句来创建一个索引:
create index idx_t1_bcd on t1(b,c,d);
上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引。
但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的:
create index idx_t1_bcd on t1(b asc,c asc,d asc);
asc表示的是升序,使用这种语法创建出来的索引