diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/opt_range.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc index ee328dadad6..59ded7354f1 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1610,17 +1610,6 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use, } param.key_parts_end=key_parts; - /* Calculate cost of full index read for the shortest covering index */ - if (!head->used_keys.is_clear_all()) - { - int key_for_use= find_shortest_key(head, &head->used_keys); - double key_read_time= get_index_only_read_time(¶m, records, - key_for_use); - DBUG_PRINT("info", ("'all'+'using index' scan will be using key %d, " - "read time %g", key_for_use, key_read_time)); - if (key_read_time < read_time) - read_time= key_read_time; - } if ((tree=get_mm_tree(¶m,cond))) { @@ -1683,6 +1672,19 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use, SEL_IMERGE *imerge; TABLE_READ_PLAN *best_conj_trp= NULL, *new_conj_trp; LINT_INIT(new_conj_trp); /* no empty index_merge lists possible */ + + /* Calculate cost of full index read for the shortest covering index */ + if (!head->used_keys.is_clear_all()) + { + int key_for_use= find_shortest_key(head, &head->used_keys); + double key_read_time= get_index_only_read_time(¶m, records, + key_for_use); + DBUG_PRINT("info", ("'all'+'using index' scan will be using key %d, " + "read time %g", key_for_use, key_read_time)); + if (key_read_time < read_time) + read_time= key_read_time; + } + DBUG_PRINT("info",("No range reads possible," " trying to construct index_merge")); List_iterator_fast<SEL_IMERGE> it(tree->merges); |