mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
better fix for MySQL bugs
BUG#26447 prefer a clustered key for an index scan, as secondary index is always slower ... which was fixed to cause BUG#35850 queries take 50% longer ... and was reverted and BUG#39653 prefer a secondary index for an index scan, as clustered key is always slower ... which was fixed to cause BUG#55656 mysqldump takes six days instead of half an hour ... and was amended with a special case workaround sql/opt_range.cc: move get_index_only_read_time() into the handler class sql/sql_select.cc: use cost not an index length when choosing a cheaper index
This commit is contained in:
@@ -1304,6 +1304,16 @@ public:
|
||||
{ return ulonglong2double(stats.data_file_length) / IO_SIZE + 2; }
|
||||
virtual double read_time(uint index, uint ranges, ha_rows rows)
|
||||
{ return rows2double(ranges+rows); }
|
||||
|
||||
/**
|
||||
Calculate cost of 'keyread' scan for given index and number of records.
|
||||
|
||||
@param index index to read
|
||||
@param ranges #of ranges to read
|
||||
@param rows #of records to read
|
||||
*/
|
||||
virtual double keyread_time(uint index, uint ranges, ha_rows rows);
|
||||
|
||||
virtual const key_map *keys_to_use_for_scanning() { return &key_map_empty; }
|
||||
bool has_transactions()
|
||||
{ return (ha_table_flags() & HA_NO_TRANSACTIONS) == 0; }
|
||||
|
||||
Reference in New Issue
Block a user