尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

SQL优化-索引扫描

发布时间:2026/9/20 15:01:47

资讯中心
01
ARTICLE

SQL优化-索引扫描

SQL优化-索引扫描
Backward index scan 是什么意思在 MySQL尤其是 8.0 的EXPLAIN FORMATTREE/EXPLAIN ANALYZE里Backward index scan 表示优化器沿索引反向读取数据从大到小用来满足ORDER BY ... DESC或某些反向范围条件从而避免额外排序filesort。1. 和正向扫描对比类型含义典型场景Index scan正向从索引小 → 大读ORDER BY start_time ASCBackward index scan反向从索引大 → 小读ORDER BY start_time DESC例如索引(start_time)-- 可能Forward index scan从小到大ORDER BY start_time ASC-- 可能Backward index scan从大到小ORDER BY start_time DESC2. 为什么有用若 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_time4. 什么时候不会出现即使有索引也可能没有 Backward index scan例如你之前那条 SQLverification_result ! 0000过滤选择性差优化器认为全表扫更便宜ORDER BY 列和索引列不一致如索引在start_time却ORDER BY create_time这时计划会是 Table scan Sort而不是 Backward index scan。5. 和「倒序索引」的区别Backward index scan运行时反向读现有 BTree 索引不必建DESC索引。MySQL 8.0 也支持索引定义里写DESCCREATE INDEX idx ON t (start_time DESC);对 InnoDB 来说8.0 起正/反序索引能力更完整但很多时候正向索引 backward scan 就够用了。6. 一句话Backward index scan 索引倒着扫用来直接得到 DESC 顺序省掉排序。若你希望风控告警那条 SQL 出现它需要WHERE 能走索引尤其时间范围 ORDER BY 与索引列一致如start_time DESC 合适的复合索引而不是只有单列索引却全表扫。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。