当前位置: 首页 > news >正文

SQL优化-索引扫描

Backward index scan 是什么意思?

在 MySQL(尤其是 8.0 的EXPLAIN FORMAT=TREE/EXPLAIN ANALYZE)里,Backward index scan 表示:

优化器沿索引反向读取数据(从大到小),用来满足ORDER BY ... DESC或某些反向范围条件,从而避免额外排序(filesort)。


1. 和正向扫描对比

类型含义典型场景

Index scan(正向)

从索引小 → 大读

ORDER BY start_time ASC

Backward index scan(反向)

从索引大 → 小读

ORDER BY start_time DESC

例如索引(start_time)

-- 可能:Forward index scan,从小到大

ORDER BY start_time ASC

-- 可能:Backward index scan,从大到小

ORDER BY start_time DESC


2. 为什么有用

若 WHERE 能用上该索引,且 ORDER BY 方向与扫描方向一致,MySQL 可以:

Index (range) scan backward

→ 结果已经按 DESC 有序

→ 不需要 Sort / filesort

执行计划里若看到 Backward index scan,通常是好信号(比全表扫 + Sort 好)。


3. 计划里可能长什么样

-> Index range scan (backward) on t using idx_start_time

(cost=... rows=...)

或:

-> Backward index scan on idx_start_time


4. 什么时候不会出现

即使有索引,也可能没有 Backward index scan,例如你之前那条 SQL:

  • verification_result != '0000'过滤选择性差
  • 优化器认为全表扫更便宜
  • ORDER BY 列和索引列不一致(如索引在start_time,却ORDER BY create_time

这时计划会是 Table scan + Sort,而不是 Backward index scan。


5. 和「倒序索引」的区别

  • Backward index scan:运行时反向读现有 B+Tree 索引,不必建DESC索引。
  • MySQL 8.0 也支持索引定义里写DESC

CREATE INDEX idx ON t (start_time DESC);

对 InnoDB 来说,8.0 起正/反序索引能力更完整,但很多时候正向索引 + backward scan 就够用了。


6. 一句话

Backward index scan = 索引倒着扫,用来直接得到 DESC 顺序,省掉排序。

若你希望风控告警那条 SQL 出现它,需要:WHERE 能走索引(尤其时间范围)+ ORDER BY 与索引列一致(如start_time DESC)+ 合适的复合索引,而不是只有单列索引却全表扫。

http://www.jsqmd.com/news/1113022/

相关文章:

  • AI认证不是文凭,而是可验证的工程能力锻造清单
  • 关于单片机降功耗的五大策略
  • 最新AI量化开发效率,交易认知和技术实现要一起走
  • 2026年罗马尼亚EOR名义雇主服务商权威排行榜:揭晓五款精选五大方案
  • OpenSolon 开源框架:7 年开源,近半年下载 1200 万次,或可替换 Spring 生态
  • 4563563
  • 多维聚合实战:维度拓扑、度量规则与数据变形链路
  • 合同管理的“三级跳”:道本×DeepSeek如何把三件事做到位
  • 【关于Tomcat 并发量】
  • 本地AI项目安全部署:使用Docker实现环境隔离与资源管控
  • AI编程助手实战对比:Deepseek-V4 vs Claude-Opus工程能力深度解析
  • 东莞食品品牌策划设计公司推荐:视维(SIVIBRAND),让食品品牌从“好看”到“好卖”
  • 从Notebook到生产:机器学习模型服务化七步加固指南
  • 仅限前500名开发者获取:LLM提示工程白皮书V3.2(含GPT-4.5适配层提示词迁移方案)
  • 2026视频去水印方法有哪些?靠谱视频去水印软件推荐
  • 机器学习论文精读四步法:从无效阅读到可复现操作
  • 机器学习系统工程实战:从模型上线到稳定服务的全链路体检
  • FastAPI+ONNX+K8s:机器学习模型生产化落地实战
  • 最近折腾了很多C++ GUI,感觉没有前端或者移动端的UI来的痛快~最近找到了这个叫做 Sciter.JS 的可嵌入式的HTML/CSS/JS 引擎,
  • 豫北工装产业上下游配套协同发展现状深度梳理
  • 生产级机器学习模型服务化落地实战指南
  • 高效实现B站缓存视频转换:m4s到MP4的无损转换专业方案
  • 新一代浏览器自动化框架:如何系统性解决Selenium的七大痛点
  • ApiGo:AI 驱动的低代码 API 平台,5.1.0 版本更新助力企业数字化转型!
  • 一句话,生成一个能交付的可视化应用 | EasyAI 开启内测
  • DeepSeek V4 vs GPT-5.5实测:显存占用、推理延迟与微调成本深度对比
  • 谷歌GEO:AI搜索时代,大鱼营销助力出海企业解锁新流量赛道
  • 创建wxWidgets应用程序
  • 虚拟商城防盗刷核心:WAF 封堵漏洞,流量清洗抵御爬虫 CC 攻击
  • 测试工程师AI实战指南:从提效工具到智能测试伙伴的进阶路径