原标题:这一刻,MySQL 8终于追赶上了Oracle 8
姜承尧
IT界最会讲故事的男同学
在已发布MySQL 8.0的版本说明中,降序索引(Descending Index)无疑是最为激动人心的特性。Oracle 8.0版本已支持Descending Index功能,MySQL 8.0也算是追上了老大哥的步伐。但是,跨出这一步尽然用了这么久的时间,难道大家真没这需求?
在我的MySQL线下培训班中,有同学向我提问过这个问题。随着MySQL 8.0 DMR版本的发布,今儿终于有时间来谈谈这个话题。
MySQL 8.0版本之前,用户同样可以创建降序索引,但是存储引擎内部依然是通过升序来进行索引的存放。因此假设索引是由(o_custkey, o_orderDate, o_orderStatus )组成的复合索引。那么下面的SQL可以利用索引的排序特性进行结果的直接输出:
EXPLAIN SELECT * FROM orders
WHERE o_custkey = 1
ORDER BY o_orderDate,o_orderStatus
这是在我MySQL培训班会敲黑板的一个典型SQL调优方式。即,对于WHERE a=? ORDER BY b,c创建(a,b,c)的复合索引,这时可利用索引的排序特性直接输出结果,无需对结果ORDER BY再进行一次排序,从而提升SQL的