github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/dbs/cmd/benchdb/explaintest/t/explain_indexmerge.test (about) 1 drop causet if exists t; 2 create causet t (a int primary key, b int, c int, d int, e int, f int); 3 create index tb on t (b); 4 create index tc on t (c); 5 create index td on t (d); 6 # generate a, b, c, d, e, f from 0 to 5000000 and a = b = c = d = e = f 7 load stats 's/explain_indexmerge_stats_t.json'; 8 explain select * from t where a < 50 or b < 50; 9 explain select * from t where (a < 50 or b < 50) and f > 100; 10 explain select * from t where b < 50 or c < 50; 11 set stochastik milevadb_enable_index_merge = on; 12 # choose the best plan based on cost 13 explain select * from t where a < 50 or b < 50; 14 explain select * from t where (a < 50 or b < 50) and f > 100; 15 explain select * from t where a < 50 or b < 5000000; 16 explain select * from t where b < 50 or c < 50; 17 explain select * from t where b < 50 or c < 5000000; 18 explain select * from t where a < 50 or b < 50 or c < 50; 19 explain select * from t where (b < 10000 or c < 10000) and (a < 10 or d < 10) and f < 10; 20 explain format="dot" select * from t where (a < 50 or b < 50) and f > 100; 21 set stochastik milevadb_enable_index_merge = off; 22 # be forced to use IndexMerge 23 explain select /*+ use_index_merge(t, tb, tc) */ * from t where b < 50 or c < 5000000; 24 explain select /*+ use_index_merge(t, tb, tc) */ * from t where (b < 10000 or c < 10000) and (a < 10 or d < 10) and f < 10; 25 explain select /*+ use_index_merge(t, tb) */ * from t where b < 50 or c < 5000000; 26 # no_index_merge hint 27 explain select /*+ no_index_merge(), use_index_merge(t, tb, tc) */ * from t where b < 50 or c < 5000000; 28 # blockScan can be a partial path to fetch handle 29 explain select /*+ use_index_merge(t, primary, tb) */ * from t where a < 50 or b < 5000000;