1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

join buffer cache usage/not usage is taken

into account to increase the cost of FULL SCAN


sql/sql_select.cc:
  more accurate FULL SCAN cost estimation:
  join buffer cache usage/not usage is taken
  into account to increase the cost
This commit is contained in:
unknown
2003-09-16 04:04:54 +04:00
parent 447f398171
commit 4a32d2e110

View File

@ -2133,11 +2133,21 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count,
s->table->used_keys && best_key) &&
!(s->table->force_index && best_key))
{ // Check full join
/*
Estimate cost of reading table. Note, that we don't read a table
on each iteration as in most cases join buffer is in use.
*/
/* Estimate cost of reading table. */
tmp= (double) s->read_time;
if (s->on_expr) // Can't use join cache
{
/* We have to read the whole table for each record */
tmp*= record_count;
}
else
{
/* We read the table as many times as join buffer becomes full. */
tmp*= (1.0 + floor((double) cache_record_length(join,idx) *
record_count /
(double) thd->variables.join_buff_size));
}
/*
In case of full scan we check every row in the table:
here we take into account rows read and skipped, as well as rows