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