首页/数据/数据库速查/索引提示与连接顺序提示(USE INDEX / STRAIGHT_JOIN)
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

索引提示与连接顺序提示(USE INDEX / STRAIGHT_JOIN)

优化器偶尔选错索引或连接顺序,可用 USE/IGNORE/FORCE INDEX 与 STRAIGHT_JOIN 强行干预;但它们是最后手段而非常态。

数据库速查数据更新于 2026-10-12
用途干预优化器
索引USE INDEX / IGNORE INDEX / FORCE INDEX
连接STRAIGHT_JOIN / JOIN_ORDER(8.0 无官方 hint 需改写)

用法示例

用法示例
SELECT * FROM orders FORCE INDEX (idx_user_created)
WHERE user_id = 42 ORDER BY created_at DESC LIMIT 10;

SELECT STRAIGHT_JOIN o.id, u.name
FROM orders o JOIN users u ON u.id = o.user_id
WHERE o.status = 'paid';
提示会与统计信息脱钩:数据分布变化后提示可能变成新的性能陷阱,用前先记录生效原因与复盘日期。

易错点

  • FORCE INDEX 指定不存在的索引会直接报错,改名索引要全局搜索提示引用
  • STRAIGHT_JOIN 固定连接顺序后,驱动表变化时计划可能显著变差,须压测验证

数据来源与参考

  • MySQL 8.0 Reference Manual: Index Hints

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌