MySQL:覆盖索引实例请教

CREATE TABLE T_ORDER (

ID INT PRIMARY KEY AUTO_INCREMENT,-- 自增主键

ORDER_CODE VARCHAR (10) NOT NULL,-- 订单编码

ORDER_AMOUNT INT NOT NULL,-- 订单数量

UNIQUE KEY UNIQUE_ORDER_CODE (ORDER_CODE) 

);

1、创建订单表(T_ORDER),订单表中包含订单编码(ORDER_CODE)、订单数量(ORDER_AMOUNT)
2、向订单表(T_ORDER)中插入五万条测试数据

EXPLAIN SELECT ORDER_CODE, ORDER_AMOUNT FROM T_ORDER ORDER BY ORDER_CODE LIMIT 1000;

EXPLAIN结果如下:
通过 type = ALL 可知进行了全表扫描

我的疑问是:既然二级索引(UNIQUE_ORDER_CODE)已将ORDER_CODE排序,SQL的逻辑为什么不是先从二级索引中取前1000个ORDER_CODE,再根据这1000个ORDER_CODE到聚簇索引中回表查询出ORDER_AMOUNT呢?MySQL为何会判定这种场景需要进行全表扫描呢?

回答

或者数据量太小了?

你加到百万试试看呢

以上是 MySQL:覆盖索引实例请教 的全部内容, 来源链接: utcz.com/a/36574.html

回到顶部