У меня есть таблица MySQL, которая выглядит следующим образом:
CREATE TABLE my_facts (
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
`account_id` int(11) NOT NULL,
`asked_on` date NOT NULL,
`foo_id` int(11) NOT NULL,
`bar_id` int(11) NOT NULL,
`baz_id` int(11) NOT NULL,
`corge_id` int(11) NOT NULL,
`grault_id` int(11) NOT NULL,
`flob_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL)
ENGINE=InnoDB;
и имеет 450 тыс. Строк.Но: я хочу добавить к нему несколько индексов:
CREATE INDEX `k_account_foo_id` ON `my_facts` (`account_id`, `asked_on`, `foo_id`, `tag_id`);
CREATE INDEX `k_account_bar_id` ON `my_facts` (`account_id`, `asked_on`, `bar_id`, `tag_id`);
CREATE INDEX `k_account_baz_id` ON `my_facts` (`account_id`, `asked_on`, `baz_id`, `tag_id`);
CREATE INDEX `k_account_corge_id` ON `my_facts` (`account_id`, `asked_on`, `corge_id`, `tag_id`);
CREATE INDEX `k_account_grault_id` ON `my_facts` (`account_id`, `asked_on`, `grault_id`, `tag_id`);
Моя проблема в том, что каждый индекс создается дольше, чем последний - и, похоже, он находится на геометрической траектории.Для создания индексов требуется 11,6 с, 28,8 с, 44,4 с, 76 с и 128 с.И я хотел бы добавить еще несколько индексов.
Когда я создаю таблицу как MyISAM, весь процесс не только значительно ускоряется, создание каждого последующего индекса занимает, может быть, на секунду больше, чем предыдущий индекс.
Что дает?Ожидается ли такое поведение?Я делаю что-то смешное в создании моего индекса?
Для чего это стоит, я использую MySQL 5.1.48 / OS X 10.6.8 в этом тесте.