首页/数据/SQL 速查/MySQL 8.0 优化器提示 /*+ */
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

MySQL 8.0 优化器提示 /*+ */

语句级提示:INDEX/NO_INDEX 控制索引、JOIN_ORDER 固定连接顺序、SET_VAR 临时改会话变量、MAX_EXECUTION_TIME 限制执行时长。

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

示例

示例
SELECT /*+ JOIN_ORDER(u, o), NO_INDEX(o idx_status) */
       u.name, o.total
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE u.city = 'shanghai';

SELECT /*+ MAX_EXECUTION_TIME(1000) */ COUNT(*)
FROM orders;

SELECT /*+ SET_VAR(sort_buffer_size = 32M) */ *
FROM orders ORDER BY total DESC LIMIT 10;
位置写在 SELECT/UPDATE/DELETE/INSERT 等关键字之后
MAX_EXECUTION_TIME单位毫秒,只作用于只读 SELECT
SET_VAR语句级临时覆盖指定系统变量

易错点

  • 把 SET_VAR 当持久设置:只在语句执行期间覆盖,结束后恢复原值
  • 提示写了却不生效:名称需拼写正确且有权限,8.0 对提示独立解析;用 EXPLAIN 验证是否被采纳

数据来源与参考

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