You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询包含指定数值的区间的SELECT语句时间复杂度疑问

MySQL SELECT查询的时间复杂度与执行流程分析

假设存在一张存储整数区间的表,startNum和endNum列均已建立独立索引,表中数据如下:

startNum, endNum
3, 8
10, 15
16, 21
28, 42

执行以下查询语句:

SELECT * FROM table
WHERE startNum <= 19 AND endNum >= 19

我认为该查询的时间复杂度是O(N),执行流程大致为:

  • 通过startNum索引筛选出所有满足startNum <= 19的前3行数据;
  • 遍历这3行数据,逐一校验endNum >= 19的条件,最终筛选出第3行;
  • 返回结果行[16, 21]。

我想确认:MySQL是否能执行以下更高效的O(logN)流程?

  • 借助startNum已排序的特性,通过二分查找定位符合条件的行;
  • 再借助endNum已排序的特性,通过二分查找确认该行满足条件;
  • 返回结果行[16, 21]。

根据MySQL官方文档的描述:

如果操作符是>, <, >=, <=, !=, <>, BETWEEN或LIKE,优化器会使用该条件,但不会再考虑更多的索引部分。

我的判断是MySQL不会执行上述高效的二分查找流程,这个判断是否正确?有没有配置可以让MySQL执行这种二分查找流程?

内容的提问来源于stack exchange,提问作者leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:27:22