【发布时间】:2021-08-02 07:51:05
【问题描述】:
我偶然发现了 optimizer hints MySQL 功能 here,我不知道它存在,并试图弄清楚如何将其与 Yii2 一起使用。
MySQL 支持使用optimizer hints 设置特定选项,例如:
SELECT /*+ NO_RANGE_OPTIMIZATION(t3 PRIMARY, f2_idx) */ f1
FROM t3 WHERE f1 > 30 AND f1 < 33;
SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
SELECT /*+ NO_ICP(t1, t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...;
EXPLAIN SELECT /*+ NO_ICP(t1) */ * FROM t1 WHERE ...;
SELECT /*+ MERGE(dt) */ * FROM (SELECT * FROM t1) AS dt;
INSERT /*+ SET_VAR(foreign_key_checks=OFF) */ INTO t2 VALUES(2);
是否有 Yii2 本地设置这些 query hints 的方式?
【问题讨论】:
-
我认为他们在那里是最后的选择。提前获取索引并让优化器做出正确的决策是我的偏好。
标签: mysql yii2 query-hints