38 lines
1.9 KiB
Plaintext
38 lines
1.9 KiB
Plaintext
--source include/have_optimizer_trace.inc
|
|
|
|
CREATE TABLE t1 (f1 INT, f2 INT, f3 CHAR(1), f4 CHAR(1), f5 CHAR(1), f6 CHAR(1),
|
|
PRIMARY KEY (f5, f1), KEY (f2), KEY (f3), KEY (f4)) ENGINE=INNODB;
|
|
INSERT INTO t1 VALUES (1, 1, 'a', 'h', 'i', ''), (2, 3, 'a', 'h', 'i', ''), (3, 2, 'b', '', 'j', ''), (4, 2, 'b', '', 'j', '');
|
|
INSERT INTO t1 VALUES (5, 1, 'a', 'h', 'i', ''), (6, 3, 'a', 'h', 'i', ''), (7, 2, 'b', '', 'j', ''), (8, 2, 'b', '', 'j', '');
|
|
INSERT INTO t1 SELECT f1 + 8, f2, f3, f4, f5, f6 FROM t1;
|
|
INSERT INTO t1 SELECT f1 + 16, f2, f3, f4, f5, f6 FROM t1;
|
|
INSERT INTO t1 VALUES (33, 3, 'c', 'g', '', ''), (34, 4, 'c', 'g', '', ''), (35, 5, 'd', 'f', '', ''), (36, 6, 'd', 'f', '', '');
|
|
INSERT INTO t1 SELECT f1 + 36, f2, f3, f4, f5, f6 FROM t1;
|
|
INSERT INTO t1 SELECT f1 + 72, f2, f3, f4, f5, f6 FROM t1;
|
|
INSERT INTO t1 SELECT f1 + 144, f2, f3, f4, f5, f6 FROM t1;
|
|
ANALYZE TABLE t1;
|
|
|
|
SET optimizer_trace_max_mem_size=1048576; # 1MB
|
|
SET end_markers_in_json=on;
|
|
SET optimizer_trace="enabled=on,one_line=off";
|
|
|
|
SET optimizer_switch='index_merge_union=off,index_merge=off';
|
|
EXPLAIN SELECT /*+ INDEX_MERGE(t1 f2, f3) */ f1 FROM t1 WHERE f2 = 5 OR f3 = 'c' OR f4 = 'f';
|
|
SELECT * FROM information_schema.OPTIMIZER_TRACE;
|
|
|
|
SET optimizer_switch='index_merge=on,index_merge_intersection=on';
|
|
EXPLAIN SELECT /*+ NO_INDEX_MERGE(t1 f3) */ COUNT(*) FROM t1 WHERE f4 = 'h' AND f2 = 2 AND f3 = 'b';
|
|
SELECT * FROM information_schema.OPTIMIZER_TRACE;
|
|
|
|
SET optimizer_switch='index_merge_union=off,index_merge=off';
|
|
# sort_union(f2,f4)
|
|
EXPLAIN SELECT /*+ INDEX_MERGE(t1 f2, f3, f4) */ * FROM t1 WHERE (f2 = 5 OR f3 = 'b') AND (f2 BETWEEN 300 AND 310 OR f4 = 'b');
|
|
SELECT * FROM information_schema.OPTIMIZER_TRACE;
|
|
# union(f2,f3)
|
|
EXPLAIN SELECT /*+ INDEX_MERGE(t1 f2, f3, f4) */ * FROM t1 WHERE (f2 = 5 OR f3 = 'b') AND (f2 BETWEEN 1 AND 10 OR f4 = 'b');
|
|
SELECT * FROM information_schema.OPTIMIZER_TRACE;
|
|
|
|
SET optimizer_switch=default;
|
|
|
|
DROP TABLE t1;
|