Files
tidb/statistics/testdata/integration_suite_out.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"
]
}
]
}
]