You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
5.7 KiB
143 lines
5.7 KiB
[
|
|
{
|
|
"Name": "TestCompIndexInExprCorrCol",
|
|
"Cases": [
|
|
{
|
|
"SQL": "explain select t.e in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c in (1, 2) and s.d = t.a and s.a = t1.a) from t",
|
|
"Result": [
|
|
"Projection_11 2.00 root Column#17",
|
|
"└─Apply_13 2.00 root CARTESIAN left outer semi join, other cond:eq(test.t.e, Column#16)",
|
|
" ├─TableReader_15(Build) 2.00 root data:TableFullScan_14",
|
|
" │ └─TableFullScan_14 2.00 cop[tikv] table:t keep order:false",
|
|
" └─StreamAgg_20(Probe) 1.00 root funcs:count(1)->Column#16",
|
|
" └─IndexJoin_36 2.00 root inner join, inner:TableReader_35, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)",
|
|
" ├─IndexReader_29(Build) 2.00 root index:IndexRangeScan_28",
|
|
" │ └─IndexRangeScan_28 2.00 cop[tikv] table:s, index:idx(b, c, d) range: decided by [eq(test.t.b, 1) in(test.t.c, 1, 2) eq(test.t.d, test.t.a)], keep order:false",
|
|
" └─TableReader_35(Probe) 1.00 root data:TableRangeScan_34",
|
|
" └─TableRangeScan_34 1.00 cop[tikv] table:t1 range: decided by [test.t.a], keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t.e in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c in (1, 2) and s.d = t.a and s.a = t1.a) from t",
|
|
"Result": [
|
|
"1",
|
|
"1"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestIndexStringIsTrueRange",
|
|
"Cases": [
|
|
{
|
|
"SQL": "explain select * from t0 where c0",
|
|
"Result": [
|
|
"TableReader_7 0.80 root data:Selection_6",
|
|
"└─Selection_6 0.80 cop[tikv] test.t0.c0",
|
|
" └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain select * from t0 where c0 and c0 > '123'",
|
|
"Result": [
|
|
"IndexReader_7 1.00 root index:Selection_6",
|
|
"└─Selection_6 1.00 cop[tikv] test.t0.c0",
|
|
" └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:(\"123\",+inf], keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain select * from t0 where c0 and c0 <> '123'",
|
|
"Result": [
|
|
"IndexReader_7 1.00 root index:Selection_6",
|
|
"└─Selection_6 1.00 cop[tikv] test.t0.c0",
|
|
" └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[-inf,\"123\"), (\"123\",+inf], keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain select * from t0 where c0 is true",
|
|
"Result": [
|
|
"TableReader_7 0.80 root data:Selection_6",
|
|
"└─Selection_6 0.80 cop[tikv] istrue(cast(test.t0.c0))",
|
|
" └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain select * from t0 where c0 is false",
|
|
"Result": [
|
|
"TableReader_7 0.80 root data:Selection_6",
|
|
"└─Selection_6 0.80 cop[tikv] isfalse(cast(test.t0.c0))",
|
|
" └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain select * from t0 where c0 and c0 in ('123','456','789')",
|
|
"Result": [
|
|
"IndexReader_7 1.00 root index:Selection_6",
|
|
"└─Selection_6 1.00 cop[tikv] test.t0.c0",
|
|
" └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[\"123\",\"123\"], [\"456\",\"456\"], [\"789\",\"789\"], keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain SELECT * FROM t0 WHERE ('a' != t0.c0) AND t0.c0;",
|
|
"Result": [
|
|
"IndexReader_7 1.00 root index:Selection_6",
|
|
"└─Selection_6 1.00 cop[tikv] test.t0.c0",
|
|
" └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[-inf,\"a\"), (\"a\",+inf], keep order:false"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestPrefixIndexMultiColDNF",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select * from t2 where t='aaaa';",
|
|
"Plan": [
|
|
"IndexLookUp_11 10.00 root ",
|
|
"├─IndexRangeScan_8(Build) 10.00 cop[tikv] table:t2, index:t(t) range:[\"aaa\",\"aaa\"], keep order:false, stats:pseudo",
|
|
"└─Selection_10(Probe) 10.00 cop[tikv] eq(test.t2.t, \"aaaa\")",
|
|
" └─TableRowIDScan_9 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
|
|
],
|
|
"Result": [
|
|
"1 aaaa"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t2 where t='aaaa' or t = 'a';",
|
|
"Plan": [
|
|
"IndexLookUp_11 16.00 root ",
|
|
"├─IndexRangeScan_8(Build) 20.00 cop[tikv] table:t2, index:t(t) range:[\"a\",\"a\"], [\"aaa\",\"aaa\"], keep order:false, stats:pseudo",
|
|
"└─Selection_10(Probe) 16.00 cop[tikv] or(eq(test.t2.t, \"aaaa\"), eq(test.t2.t, \"a\"))",
|
|
" └─TableRowIDScan_9 20.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
|
|
],
|
|
"Result": [
|
|
"1 aaaa",
|
|
"2 a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t2 where t='aaaa';",
|
|
"Plan": [
|
|
"TableReader_7 1.00 root data:Selection_6",
|
|
"└─Selection_6 1.00 cop[tikv] eq(test.t2.t, \"aaaa\")",
|
|
" └─TableRangeScan_5 2.00 cop[tikv] table:t2 range:[0,+inf], keep order:false"
|
|
],
|
|
"Result": [
|
|
"1 aaaa"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t2 where t='aaaa' or t = 'a';",
|
|
"Plan": [
|
|
"TableReader_7 1.60 root data:Selection_6",
|
|
"└─Selection_6 1.60 cop[tikv] or(eq(test.t2.t, \"aaaa\"), eq(test.t2.t, \"a\"))",
|
|
" └─TableRangeScan_5 2.00 cop[tikv] table:t2 range:[0,+inf], keep order:false"
|
|
],
|
|
"Result": [
|
|
"1 aaaa",
|
|
"2 a"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|