MySQL 8.0.40
Source Code Documentation
|
#include "sql/opt_statistics.h"
#include <assert.h>
#include <algorithm>
#include "my_base.h"
#include "my_macros.h"
#include "sql/handler.h"
#include "sql/key.h"
#include "sql/table.h"
Functions | |
rec_per_key_t | guess_rec_per_key (const TABLE *const table, const KEY *const key, uint used_keyparts) |
This code for computing a guestimate for records per key is based on code in Optimize_table_order::find_best_ref(). More... | |
rec_per_key_t guess_rec_per_key | ( | const TABLE *const | table, |
const KEY *const | key, | ||
uint | used_keyparts | ||
) |
This code for computing a guestimate for records per key is based on code in Optimize_table_order::find_best_ref().
Guesstimate for "records per key" when index statistics is not available.
Assume that the first key part matches 1% of the file and that the whole key matches 10 (duplicates) or 1 (unique) records. For small tables, ensure there are at least ten different key values. Assume also that more key matches proportionally more records. This gives the formula:
records = a - (x-1)/(c-1)*(a-b)
where
b = records matched by whole key a = records matched by first key part (1% of all records?) c = number of key parts in key x = used key parts (1 <= x <= c)