diff options
author | Sergei Golubchik <sergii@pisem.net> | 2011-01-14 12:03:41 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2011-01-14 12:03:41 +0100 |
commit | 418df96d51b54bb1b20344dcaaee547aeee3708e (patch) | |
tree | 28c9eafba04ebe3f1c3f18c6ec7597973b4b5a66 /storage/myisam | |
parent | 6554977fe577507378290c44d9d3476d1d9d107d (diff) | |
download | mariadb-git-418df96d51b54bb1b20344dcaaee547aeee3708e.tar.gz |
use bulk insert and repair by sort for unique keys in
Aria and MyISAM in create_internal_tmp_table_from_heap()
(safe, as duplicates are impossible).
This gives a HUGE speed boost!
sql/opt_subselect.cc:
Fixed problem with wrong recinfo in create_duplicate_weedout_tmp_tabl()
Tagged the table with 'no_rows' so that when we create the table on disk,
we only store the index data. This gave us a major speedup!
sql/sql_select.cc:
create_tmp_table_from_heap() now uses bulk_insert + repair_by_sort
when creating Aria/MyISAM tables from HEAP tables.
This gives a HUGE speed boost!
storage/maria/ha_maria.cc:
Extended bulk_insert() to recreate UNIQUE keys for
internal temporary tables
storage/maria/ma_open.c:
Initialize m_info->lock.type properly for temporarly tables
(needed for start_bulk_insert())
storage/maria/ma_write.c:
Don't check uniques that are disabled
storage/myisam/ha_myisam.cc:
Extended bulk_insert() to recreate UNIQUE keys for
internal temporary tables.
Diffstat (limited to 'storage/myisam')
-rw-r--r-- | storage/myisam/ha_myisam.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index c7dd4f2b943..781ce39a99a 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -1596,7 +1596,15 @@ void ha_myisam::start_bulk_insert(ha_rows rows) */ if (file->state->records == 0 && can_enable_indexes && (!rows || rows >= MI_MIN_ROWS_TO_DISABLE_INDEXES)) - mi_disable_non_unique_index(file,rows); + { + if (file->open_flag & HA_OPEN_INTERNAL_TABLE) + { + file->update|= HA_STATE_CHANGED; + mi_clear_all_keys_active(file->s->state.key_map); + } + else + mi_disable_non_unique_index(file,rows); + } else if (!file->bulk_insert && (!rows || rows >= MI_MIN_ROWS_TO_USE_BULK_INSERT)) |