Optimizer trace: Make ref_optimizer_key_uses[*] show the index name
This commit is contained in:
parent
b9adaeb491
commit
353746918b
@ -963,12 +963,14 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "a",
|
||||
"field": "a",
|
||||
"equals": "t2.b + 2",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t2",
|
||||
"index": "a",
|
||||
"field": "a",
|
||||
"equals": "t1.b",
|
||||
"null_rejecting": true
|
||||
@ -1975,18 +1977,21 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "a_c",
|
||||
"field": "a",
|
||||
"equals": "1",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "a_b",
|
||||
"field": "a",
|
||||
"equals": "1",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "a_b",
|
||||
"field": "b",
|
||||
"equals": "2",
|
||||
"null_rejecting": true
|
||||
@ -2346,6 +2351,7 @@ select t1.a from t1 left join t2 on t1.a=t2.a {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t2",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t1.a",
|
||||
"null_rejecting": true
|
||||
@ -2484,6 +2490,7 @@ explain select * from t1 left join t2 on t2.a=t1.a {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t2",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t1.a",
|
||||
"null_rejecting": true
|
||||
@ -2670,24 +2677,28 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t2",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t1.a",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t2",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t3.a",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t3",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t2.a",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t3",
|
||||
"index": "PRIMARY",
|
||||
"field": "a",
|
||||
"equals": "t1.a",
|
||||
"null_rejecting": true
|
||||
@ -3187,36 +3198,42 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk",
|
||||
"field": "pk",
|
||||
"equals": "2",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk_a",
|
||||
"field": "pk",
|
||||
"equals": "2",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk_a",
|
||||
"field": "a",
|
||||
"equals": "5",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk_a_b",
|
||||
"field": "pk",
|
||||
"equals": "2",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk_a_b",
|
||||
"field": "a",
|
||||
"equals": "5",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "pk_a_b",
|
||||
"field": "b",
|
||||
"equals": "1",
|
||||
"null_rejecting": true
|
||||
@ -3867,12 +3884,14 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t0",
|
||||
"index": "a",
|
||||
"field": "a",
|
||||
"equals": "t1.a",
|
||||
"null_rejecting": true
|
||||
},
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "a",
|
||||
"field": "a",
|
||||
"equals": "t0.a",
|
||||
"null_rejecting": true
|
||||
|
@ -75,6 +75,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
|
||||
"ref_optimizer_key_uses": [
|
||||
{
|
||||
"table": "t1",
|
||||
"index": "key1",
|
||||
"field": "key1",
|
||||
"equals": "1",
|
||||
"null_rejecting": false
|
||||
|
@ -694,6 +694,10 @@ void print_keyuse_array_for_trace(THD *thd, DYNAMIC_ARRAY *keyuse_array)
|
||||
KEYUSE *keyuse= (KEYUSE*)dynamic_array_ptr(keyuse_array, i);
|
||||
Json_writer_object keyuse_elem(thd);
|
||||
keyuse_elem.add_table_name(keyuse->table->reginfo.join_tab);
|
||||
if (keyuse->keypart != FT_KEYPART && !keyuse->is_for_hash_join())
|
||||
{
|
||||
keyuse_elem.add("index", keyuse->table->key_info[keyuse->key].name);
|
||||
}
|
||||
keyuse_elem.add("field", (keyuse->keypart == FT_KEYPART) ? "<fulltext>":
|
||||
(keyuse->is_for_hash_join() ?
|
||||
keyuse->table->field[keyuse->keypart]
|
||||
|
Loading…
x
Reference in New Issue
Block a user