mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
btr0cur.c:
Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1 innobase/btr/btr0cur.c: Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1
This commit is contained in:
parent
5eb3dc3223
commit
9e6f619834
1 changed files with 9 additions and 2 deletions
|
@ -2707,8 +2707,11 @@ btr_estimate_number_of_different_key_vals(
|
|||
rec = page_rec_get_next(rec);
|
||||
}
|
||||
|
||||
|
||||
if (n_cols == dict_index_get_n_unique_in_tree(index)) {
|
||||
/* We add one because we know that the first record
|
||||
|
||||
/* If there is more than one leaf page in the tree,
|
||||
we add one because we know that the first record
|
||||
on the page certainly had a different prefix than the
|
||||
last record on the previous index page in the
|
||||
alphabetical order. Before this fix, if there was
|
||||
|
@ -2716,7 +2719,11 @@ btr_estimate_number_of_different_key_vals(
|
|||
algorithm grossly underestimated the number of rows
|
||||
in the table. */
|
||||
|
||||
n_diff[n_cols]++;
|
||||
if (btr_page_get_prev(page, &mtr) != FIL_NULL
|
||||
|| btr_page_get_next(page, &mtr) != FIL_NULL) {
|
||||
|
||||
n_diff[n_cols]++;
|
||||
}
|
||||
}
|
||||
|
||||
total_external_size +=
|
||||
|
|
Loading…
Reference in a new issue