首页/数据/SQL 速查/USE / IGNORE / FORCE INDEX 表提示
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

USE / IGNORE / FORCE INDEX 表提示

在表名后声明索引提示:强制、忽略或限定候选索引,用来复现计划或临时规避优化器误判。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT * FROM orders USE INDEX (idx_user_status)
WHERE user_id = 100 AND status = 'paid';

SELECT * FROM orders IGNORE INDEX (idx_status)
WHERE user_id = 100;

SELECT * FROM orders FORCE INDEX (idx_user_status)
WHERE user_id = 100;
USE把候选缩到给定索引,但仍可能选择其中代价更低的选项或全扫描
FORCE比 USE 更强:优先使用给定索引,确实无法使用时才退化
作用域只影响当前语句;UPDATE/DELETE 同样可用

易错点

  • 把提示写进生产代码当长期方案:数据分布变化后可能反而更慢,适合验证与应急
  • 在 PG 里找对应语法:PostgreSQL 没有原生表提示,需要从统计信息或扩展层面处理

数据来源与参考

  • MySQL 8.0 Reference Manual · Index Hints
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌