• ingo@mysql.com's avatar
    WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). · 784c9526
    ingo@mysql.com authored
    HEAP: Copies the key count to a backup variable and sets the key count to zero.
    That way, no HEAP function will ever try to touch any index.
    Re-enabling is done by copying back the backup variable.
    To avoid memory leak at table close, disable deletes all index trees.
    Re-enabling must be done with empty indexes and data anyway. Otherwise,
    the indexes would need to be repaired, wich HEAP is not capable of.
    MyISAM: Only the key_map is cleared and set.
    Re-enabling must be done with empty indexes and data. Otherwise, repair needs
    to be done which will enable all keys persistently.
    The former implementation disabled only non-unique keys and maked this persistent.
    The new implementation additionally can disable all keys, but only without
    making this persistent. Re-enabling all keys can be done without repair,
    if data file and indexes are empty.
    784c9526
sql_table.cc 94.7 KB