Quelle opt_hints_subquery_innodb.result
Sprache: Lisp
#
# MDEV-36169: LooseScan optimization picks invalid plan
#
CREATE TABLE t1 (a INTEGER NOT NULL, b INT, UNIQUE KEY (a)) engine=InnoDB;
CREATE TABLE t2 (a INTEGER NOT NULL, KEY (a));
CREATE TABLE t3 (a INTEGER NOT NULL, b INT, KEY (a));
INSERT INTO t1 VALUES (1,10), (2,20), (3,30), (4,40);
INSERT INTO t2 VALUES (2), (2), (3), (3), (4), (5);
INSERT INTO t3 VALUES (10,3), (15,3), (20,4), (30,5);
# Must not be: t3, t3(LooseScan), t1
EXPLAIN EXTENDED
SELECT * FROM t1
WHERE
t1.a IN (SELECT /*+ SEMIJOIN(LOOSESCAN) */ a FROM t2) AND
t1.b IN (SELECT /*+ SEMIJOIN(LOOSESCAN) */ a FROM t3);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t2 index a a 4 NULL 6100.00 Using index; LooseScan 1 PRIMARY t1 eq_ref a a 4 test.t2.a 116.67 Using where 1 PRIMARY t3 ref a a 4 test.t1.b 1100.00 Using index; Start temporary; End temporary
Warnings:
Note 1003 select /*+ SEMIJOIN(@`select#2` LOOSESCAN) SEMIJOIN(@`select#3` LOOSESCAN) */ `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t3`) where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t3`.`a` = `test`.`t1`.`b`
DROP TABLE t1,t2,t3;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.