如何在 Yii2 中使用 mysql 查询优化器提示?
How to use mysql query optimzer hints in Yii2?
我偶然发现了我不知道的 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
的本机方法?
您可以使用 select()
的第二个参数来传递 select 选项:
$query = (new Query())
->select('f1', '/*+ NO_RANGE_OPTIMIZATION(t3 PRIMARY, f2_idx) */')
->from('t3');
我偶然发现了我不知道的 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
的本机方法?
您可以使用 select()
的第二个参数来传递 select 选项:
$query = (new Query())
->select('f1', '/*+ NO_RANGE_OPTIMIZATION(t3 PRIMARY, f2_idx) */')
->from('t3');