1027 lines
45 KiB
JSON
1027 lines
45 KiB
JSON
[
|
|
{
|
|
"Name": "TestExpBackoffEstimation",
|
|
"Cases": [
|
|
[
|
|
"IndexReader_6 5.00 root index:IndexRangeScan_5",
|
|
"└─IndexRangeScan_5 5.00 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) range:[1,1], keep order:false"
|
|
],
|
|
[
|
|
"IndexReader_10 3.00 root index:Selection_9",
|
|
"└─Selection_9 3.00 cop[tikv] eq(test.exp_backoff.b, 1)",
|
|
" └─IndexFullScan_8 5.00 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) keep order:false"
|
|
],
|
|
[
|
|
"IndexReader_10 2.00 root index:Selection_9",
|
|
"└─Selection_9 2.00 cop[tikv] eq(test.exp_backoff.c, 1)",
|
|
" └─IndexFullScan_8 5.00 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) keep order:false"
|
|
],
|
|
[
|
|
"IndexReader_10 3.00 root index:Selection_9",
|
|
"└─Selection_9 3.00 cop[tikv] ge(test.exp_backoff.d, 3), le(test.exp_backoff.d, 5)",
|
|
" └─IndexFullScan_8 5.00 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) keep order:false"
|
|
],
|
|
[
|
|
"IndexReader_6 1.36 root index:IndexRangeScan_5",
|
|
"└─IndexRangeScan_5 1.36 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) range:[1 1 1 3,1 1 1 5], keep order:false"
|
|
],
|
|
[
|
|
"IndexReader_6 0.00 root index:IndexRangeScan_5",
|
|
"└─IndexRangeScan_5 0.00 cop[tikv] table:exp_backoff, index:idx(a, b, c, d) range:[1 1 1 3,1 1 1 5], keep order:false"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestNULLOnFullSampling",
|
|
"Cases": [
|
|
[
|
|
"test t a 0 1 3",
|
|
"test t a 0 2 2",
|
|
"test t idx 1 1 3",
|
|
"test t idx 1 2 2"
|
|
],
|
|
[
|
|
"test t a 0 0 1 1 3 3 0",
|
|
"test t a 0 1 2 1 4 4 0",
|
|
"test t idx 1 0 1 1 3 3 0",
|
|
"test t idx 1 1 2 1 4 4 0"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestDefaultSelectivityForStrMatch",
|
|
"Cases": [
|
|
{
|
|
"SQL": "set @@tidb_default_string_match_selectivity = 0.8",
|
|
"Result": null
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%'",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%'",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] regexp(test.t.b, \".*test.*\")",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*test.*\")))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100), like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100), not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' or a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 9600.00 root data:Selection",
|
|
"└─Selection 9600.00 cop[tikv] or(like(test.t.b, \"%test%\", 92), gt(plus(test.t.a, 10), 100))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "set @@tidb_default_string_match_selectivity = 0.9",
|
|
"Result": null
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] regexp(test.t.b, \".*test.*\")",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*test.*\")))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100), like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] gt(plus(test.t.a, 10), 100), not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' or a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 9800.00 root data:Selection",
|
|
"└─Selection 9800.00 cop[tikv] or(like(test.t.b, \"%test%\", 92), gt(plus(test.t.a, 10), 100))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "set @@tidb_default_string_match_selectivity = 0.1",
|
|
"Result": null
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' is true",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] istrue(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] regexp(test.t.b, \".*test.*\")",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b rlike '.*test.*'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] regexp(test.t.b, \".*test.*\")",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not rlike '.*test.*'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*test.*\")))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*test.*\")))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] gt(plus(test.t.a, 10), 100), like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100), not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' or a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8200.00 root data:Selection",
|
|
"└─Selection 8200.00 cop[tikv] or(like(test.t.b, \"%test%\", 92), gt(plus(test.t.a, 10), 100))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "set @@tidb_default_string_match_selectivity = 0",
|
|
"Result": null
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] regexp(test.t.b, \".*test.*\")",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*test.*'",
|
|
"Result": [
|
|
"TableReader 9000.00 root data:Selection",
|
|
"└─Selection 9000.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*test.*\")))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 1000.00 root data:Selection",
|
|
"└─Selection 1000.00 cop[tikv] gt(plus(test.t.a, 10), 100), like(test.t.b, \"%test%\", 92)",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%test%' and a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8000.00 root data:Selection",
|
|
"└─Selection 8000.00 cop[tikv] gt(plus(test.t.a, 10), 100), not(like(test.t.b, \"%test%\", 92))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%test%' or a + 10 > 100",
|
|
"Result": [
|
|
"TableReader 8200.00 root data:Selection",
|
|
"└─Selection 8200.00 cop[tikv] or(like(test.t.b, \"%test%\", 92), gt(plus(test.t.a, 10), 100))",
|
|
" └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTopNAssistedEstimationWithNewCollation",
|
|
"Cases": [
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.a, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.a, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] regexp(test.t.a, \".*111.*\")",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a not regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(istrue_with_null(regexp(test.t.a, \".*111.*\")))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(a, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.a, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.f, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f regexp '.*111.*'",
|
|
"Result": [
|
|
"Selection 32.00 root regexp(test.t.f, \".*111.*\")",
|
|
"└─TableReader 40.00 root data:TableFullScan",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f not regexp '.*111.*'",
|
|
"Result": [
|
|
"Selection 32.00 root not(regexp(test.t.f, \".*111.*\"))",
|
|
"└─TableReader 40.00 root data:TableFullScan",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(f, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.f, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%' and f rlike '.*111.*'",
|
|
"Result": [
|
|
"Selection 24.00 root regexp(test.t.f, \".*111.*\")",
|
|
"└─TableReader 30.00 root data:Selection",
|
|
" └─Selection 30.00 cop[tikv] like(test.t.a, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%' or f like '%111%'",
|
|
"Result": [
|
|
"TableReader 37.50 root data:Selection",
|
|
"└─Selection 37.50 cop[tikv] or(like(test.t.a, \"%111%\", 92), like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(test.t.b, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%111%'",
|
|
"Result": [
|
|
"TableReader 36.00 root data:Selection",
|
|
"└─Selection 36.00 cop[tikv] not(like(test.t.b, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] regexp(test.t.b, \".*111.*\")",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 36.00 root data:Selection",
|
|
"└─Selection 36.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*111.*\")))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(b, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(ifnull(test.t.b, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%' and f like '%111%'",
|
|
"Result": [
|
|
"TableReader 3.00 root data:Selection",
|
|
"└─Selection 3.00 cop[tikv] like(test.t.b, \"%111%\", 92), like(test.t.f, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%' or f like '%111%'",
|
|
"Result": [
|
|
"TableReader 31.00 root data:Selection",
|
|
"└─Selection 31.00 cop[tikv] or(like(test.t.b, \"%111%\", 92), like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where c like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(test.t.c, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where c not like '%111%'",
|
|
"Result": [
|
|
"TableReader 36.00 root data:Selection",
|
|
"└─Selection 36.00 cop[tikv] not(like(test.t.c, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(c, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(ifnull(test.t.c, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where d like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(test.t.d, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where d not like '%111%'",
|
|
"Result": [
|
|
"TableReader 36.00 root data:Selection",
|
|
"└─Selection 36.00 cop[tikv] not(like(test.t.d, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(c, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(ifnull(test.t.c, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where e like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(test.t.e, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where e not like '%111%'",
|
|
"Result": [
|
|
"TableReader 36.00 root data:Selection",
|
|
"└─Selection 36.00 cop[tikv] not(like(test.t.e, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(e, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 4.00 root data:Selection",
|
|
"└─Selection 4.00 cop[tikv] like(ifnull(test.t.e, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTopNAssistedEstimationWithoutNewCollation",
|
|
"Cases": [
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.a, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.a, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] regexp(test.t.a, \".*111.*\")",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a not regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(istrue_with_null(regexp(test.t.a, \".*111.*\")))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(a, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.a, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.f, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f regexp '.*111.*'",
|
|
"Result": [
|
|
"Selection 32.00 root regexp(test.t.f, \".*111.*\")",
|
|
"└─TableReader 40.00 root data:TableFullScan",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where f not regexp '.*111.*'",
|
|
"Result": [
|
|
"Selection 32.00 root not(regexp(test.t.f, \".*111.*\"))",
|
|
"└─TableReader 40.00 root data:TableFullScan",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(f, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.f, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%' and f rlike '.*111.*'",
|
|
"Result": [
|
|
"Selection 24.00 root regexp(test.t.f, \".*111.*\")",
|
|
"└─TableReader 30.00 root data:Selection",
|
|
" └─Selection 30.00 cop[tikv] like(test.t.a, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where a like '%111%' or f like '%111%'",
|
|
"Result": [
|
|
"TableReader 37.50 root data:Selection",
|
|
"└─Selection 37.50 cop[tikv] or(like(test.t.a, \"%111%\", 92), like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.b, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.b, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] regexp(test.t.b, \".*111.*\")",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b not regexp '.*111.*'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(istrue_with_null(regexp(test.t.b, \".*111.*\")))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(b, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.b, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%' and f like '%111%'",
|
|
"Result": [
|
|
"TableReader 22.50 root data:Selection",
|
|
"└─Selection 22.50 cop[tikv] like(test.t.b, \"%111%\", 92), like(test.t.f, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where b like '%111%' or f like '%111%'",
|
|
"Result": [
|
|
"TableReader 37.50 root data:Selection",
|
|
"└─Selection 37.50 cop[tikv] or(like(test.t.b, \"%111%\", 92), like(test.t.f, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where c like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.c, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where c not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.c, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(c, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.c, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where d like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.d, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where d not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.d, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(c, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.c, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where e like '%111%'",
|
|
"Result": [
|
|
"TableReader 30.00 root data:Selection",
|
|
"└─Selection 30.00 cop[tikv] like(test.t.e, \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where e not like '%111%'",
|
|
"Result": [
|
|
"TableReader 7.00 root data:Selection",
|
|
"└─Selection 7.00 cop[tikv] not(like(test.t.e, \"%111%\", 92))",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "explain format = 'brief' select * from t where ifnull(e, '1111') like '%111%'",
|
|
"Result": [
|
|
"TableReader 33.00 root data:Selection",
|
|
"└─Selection 33.00 cop[tikv] like(ifnull(test.t.e, \"1111\"), \"%111%\", 92)",
|
|
" └─TableFullScan 40.00 cop[tikv] table:t keep order:false"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestOrderingIdxSelectivityThreshold",
|
|
"Cases": [
|
|
{
|
|
"Query": "set @@tidb_opt_ordering_index_selectivity_threshold = 0",
|
|
"Result": null
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 200.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9950)",
|
|
" └─TableRowIDScan 200.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 order by c desc limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 200.00 cop[tikv] table:t, index:ic(c) keep order:true, desc, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9950)",
|
|
" └─TableRowIDScan 200.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 8999 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 9.99 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 8999)",
|
|
" └─TableRowIDScan 9.99 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9000 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9000)",
|
|
" └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9001 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 10.01 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9001)",
|
|
" └─TableRowIDScan 10.01 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 10001 order by c limit 1",
|
|
"Result": [
|
|
"IndexLookUp 1.00 root limit embedded(offset:0, count:1)",
|
|
"├─Limit(Build) 1.00 cop[tikv] offset:0, count:1",
|
|
"│ └─Selection 1.00 cop[tikv] lt(test.t.a, 10001)",
|
|
"│ └─IndexFullScan 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
"└─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 10000 order by c limit 1",
|
|
"Result": [
|
|
"IndexLookUp 1.00 root limit embedded(offset:0, count:1)",
|
|
"├─Limit(Build) 1.00 cop[tikv] offset:0, count:1",
|
|
"│ └─Selection 1.00 cop[tikv] lt(test.t.a, 10000)",
|
|
"│ └─IndexFullScan 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
"└─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 9999 order by c limit 1",
|
|
"Result": [
|
|
"IndexLookUp 1.00 root limit embedded(offset:0, count:1)",
|
|
"├─Limit(Build) 1.00 cop[tikv] offset:0, count:1",
|
|
"│ └─Selection 1.00 cop[tikv] lt(test.t.a, 9999)",
|
|
"│ └─IndexFullScan 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
"└─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 0 and b <= 100 or c >= 0 and c <= 100 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 49.76 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] or(and(ge(test.t.b, 0), le(test.t.b, 100)), and(ge(test.t.c, 0), le(test.t.c, 100)))",
|
|
" └─TableRowIDScan 49.76 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "set @@tidb_opt_ordering_index_selectivity_threshold = 0.1",
|
|
"Result": null
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 order by c limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c, offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexRangeScan(Build) 500.00 cop[tikv] table:t, index:ib(b) range:[9950,+inf], keep order:false, stats:pseudo",
|
|
" └─TopN(Probe) 1.00 cop[tikv] test.t.c, offset:0, count:1",
|
|
" └─TableRowIDScan 500.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 order by c desc limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c:desc, offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexRangeScan(Build) 500.00 cop[tikv] table:t, index:ib(b) range:[9950,+inf], keep order:false, stats:pseudo",
|
|
" └─TopN(Probe) 1.00 cop[tikv] test.t.c:desc, offset:0, count:1",
|
|
" └─TableRowIDScan 500.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 8999 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 9.99 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 8999)",
|
|
" └─TableRowIDScan 9.99 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9000 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexFullScan(Build) 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9000)",
|
|
" └─TableRowIDScan 10.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9001 order by c limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c, offset:0, count:1",
|
|
"└─TableReader 1.00 root data:TopN",
|
|
" └─TopN 1.00 cop[tikv] test.t.c, offset:0, count:1",
|
|
" └─Selection 9990.00 cop[tikv] ge(test.t.b, 9001)",
|
|
" └─TableFullScan 100000.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 10001 order by c limit 1",
|
|
"Result": [
|
|
"IndexLookUp 1.00 root limit embedded(offset:0, count:1)",
|
|
"├─Limit(Build) 1.00 cop[tikv] offset:0, count:1",
|
|
"│ └─Selection 1.00 cop[tikv] lt(test.t.a, 10001)",
|
|
"│ └─IndexFullScan 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
"└─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 10000 order by c limit 1",
|
|
"Result": [
|
|
"IndexLookUp 1.00 root limit embedded(offset:0, count:1)",
|
|
"├─Limit(Build) 1.00 cop[tikv] offset:0, count:1",
|
|
"│ └─Selection 1.00 cop[tikv] lt(test.t.a, 10000)",
|
|
"│ └─IndexFullScan 10.00 cop[tikv] table:t, index:ic(c) keep order:true, stats:pseudo",
|
|
"└─TableRowIDScan(Probe) 1.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where a < 9999 order by c limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c, offset:0, count:1",
|
|
"└─TableReader 1.00 root data:TopN",
|
|
" └─TopN 1.00 cop[tikv] test.t.c, offset:0, count:1",
|
|
" └─TableRangeScan 9999.00 cop[tikv] table:t range:[-inf,9999), keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 0 and b <= 50 or c >= 0 and c <= 50 order by c limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c, offset:0, count:1",
|
|
"└─IndexMerge 1.00 root type: union",
|
|
" ├─IndexRangeScan(Build) 510.00 cop[tikv] table:t, index:ib(b) range:[0,50], keep order:false, stats:pseudo",
|
|
" ├─IndexRangeScan(Build) 510.00 cop[tikv] table:t, index:ic(c) range:[0,50], keep order:false, stats:pseudo",
|
|
" └─TopN(Probe) 1.00 cop[tikv] test.t.c, offset:0, count:1",
|
|
" └─TableRowIDScan 1017.40 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 and c >= 9950 order by c limit 1",
|
|
"Result": [
|
|
"Limit 1.00 root offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexRangeScan(Build) 500.00 cop[tikv] table:t, index:ic(c) range:[9950,+inf], keep order:true, stats:pseudo",
|
|
" └─Selection(Probe) 1.00 cop[tikv] ge(test.t.b, 9950)",
|
|
" └─TableRowIDScan 500.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
},
|
|
{
|
|
"Query": "explain format = 'brief' select * from t where b >= 9950 and c >= 9900 order by c limit 1",
|
|
"Result": [
|
|
"TopN 1.00 root test.t.c, offset:0, count:1",
|
|
"└─IndexLookUp 1.00 root ",
|
|
" ├─IndexRangeScan(Build) 500.00 cop[tikv] table:t, index:ib(b) range:[9950,+inf], keep order:false, stats:pseudo",
|
|
" └─TopN(Probe) 1.00 cop[tikv] test.t.c, offset:0, count:1",
|
|
" └─Selection 5.00 cop[tikv] ge(test.t.c, 9900)",
|
|
" └─TableRowIDScan 500.00 cop[tikv] table:t keep order:false, stats:pseudo"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|