mirror of
https://github.com/MariaDB/server.git
synced 2025-10-26 01:18:31 +02:00
MDEV-35958 Cost estimates for materialized derived tables are poor
(Backport 11.8->11.4, the same patch)
Estimate_scan_time() calculates the cost of scanning a derivied table.
The old code did not take into account that the temporary table heap table
may be converted to Aria.
Things fixed:
- Added checking if the temporary tables data will fit in the heap.
If not, then calculate the cost based on the designated internal
temporary table engine (Aria).
- Removed MY_MAX(records, 1000) and instead trust the optimizer's
estimate of records. This reduces the cost of temporary tables a bit
for small tables, which caused a few changes in mtr results.
- Fixed cost calculation for HEAP.
- HEAP costs->row_next_find_cost was not set. This does not affect old
costs calculation as this cost slot was not used anywhere.
Now HEAP cost->row_next_find_cost is set, which allowed me to remove
some duplicated computation in ha_heap::scan_time()
Reviewed by: Sergei Petrunia <sergey@mariadb.com>
|
||
|---|---|---|
| .. | ||
| mysql-test/mtr2 | ||
| _check.c | ||
| _rectest.c | ||
| ChangeLog | ||
| CMakeLists.txt | ||
| ha_heap.cc | ||
| ha_heap.h | ||
| heapdef.h | ||
| hp_block.c | ||
| hp_clear.c | ||
| hp_close.c | ||
| hp_create.c | ||
| hp_delete.c | ||
| hp_extra.c | ||
| hp_hash.c | ||
| hp_info.c | ||
| hp_open.c | ||
| hp_panic.c | ||
| hp_rename.c | ||
| hp_rfirst.c | ||
| hp_rkey.c | ||
| hp_rlast.c | ||
| hp_rnext.c | ||
| hp_rprev.c | ||
| hp_rrnd.c | ||
| hp_rsame.c | ||
| hp_scan.c | ||
| hp_static.c | ||
| hp_test1.c | ||
| hp_test2.c | ||
| hp_update.c | ||
| hp_write.c | ||