MySQL ORDER GROUP 索引问题探讨

2022-03-05  本文已影响0人  七秒钟回忆待续

MySQL 版本: SELECT VERSION(); // 8.0.23

组合索引相关的文档:https://dev.mysql.com/doc/refman/8.0/en/multiple-column-indexes.html
EXPLAIN输出相关文档:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html
SQL的执行顺序:https://www.eversql.com/sql-order-of-operations-sql-query-order-of-execution/

DDL

CREATE TABLE `dev` (
  `id` int NOT NULL AUTO_INCREMENT,
  `x` int NOT NULL DEFAULT '0',
  `y` int NOT NULL DEFAULT '0',
  `z` int NOT NULL DEFAULT '0',
  `m` int NOT NULL DEFAULT '0',
  `n` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `idx_x_y_z` (`x`,`y`,`z`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

WHERE 篇

简单讲就是最左前缀匹配原则,并且要利用组合索引后面的索引,其前面的索引必须是等值查询(其她各种情况可以试试.......

ORDER BY 篇

结合 where 篇的经验,先看看组合索引基于最左前缀匹配原则的等值查询,即x=constant

非等值查询

GROUP BY篇

上一篇下一篇

猜你喜欢

热点阅读