索引范围扫描是否会导致“使用索引条件”?

问题描述 投票:0回答:1

当只有簇键和

idx_price
作为索引存在时..

查询:

select id , name from product where price < 20000;

解释:

  • id:1
  • 选择类型:简单
  • 表:产品
  • 分区:NULL
  • 类型:范围
  • 可能的键:idx_price
  • 键:idx_price
  • key_len:9
  • 参考:NULL
  • 行数:7
  • 过滤:100.00
  • 额外:使用索引条件
  • 集合中有 1 行,1 次警告(0.00 秒)`

据我所知,“使用索引条件”的发生取决于“where 子句”索引是否存在。

但我只是创建并使用

idex_price
作为 where 子句

我错过了什么?

mysql indexing explain
1个回答
0
投票

“额外:使用索引条件”意味着它正在利用索引条件下推优化。它使用

idx_price
索引来优化
price < 20000
子句中的
WHERE
条件。它不扫描表数据来查找满足条件的行,而是只扫描索引。

“类型:范围”表示仅检索范围

< 20000
中的行。由于索引是 B 树,因此范围条件很容易优化。在这种情况下,它可以在 B 树中搜索
20000
,然后返回树中在此之前的所有行。

© www.soinside.com 2019 - 2024. All rights reserved.