Это могло бы быть немного похожим на выяснение, какой длины длина строки, но статистика:
my_index
(my_column);Порядок величины, это должна быть 1 минута, 10 минут, 100 минут?
Спасибо
Править: Хорошо 2 часам потребовались 37 минут, по сравнению с 0 часами 33 минуты на меньшей машине спецификации, с чрезвычайно идентичными взлетами набора. Я понятия не имею, почему это взяло настолько дольше. Единственная возможность состоит в том, что машина напоминания HD на 85% полна со свободными 100 ГБ. Должен быть достаточно, но я предполагаю, что это зависит от того, как то свободное пространство распределяется.
Если вы просто добавляете единственный индекс, это займет около 10 минут. Однако это займет 100 минут или больше, если у вас нет этого индексного файла в памяти.
200 varchar с 8 миллионами строк займут максимум 1,6 ГБ, но со всеми накладными расходами на индексацию потребуется около 2–3 ГБ. Но это займет меньше времени, если длина большинства строк меньше 200 символов. (Вы можете выбрать sum (length (my_column))
, чтобы узнать, сколько места требуется.)
Вы хотите отредактировать свой /etc/mysql/my.cnf
файл. Поиграйте с этими настройками;
myisam_sort_buffer_size = 100M
sort_buffer_size = 100M
Удачи.
Кроме того, если вам когда-либо понадобится создать несколько индексов, лучше всего создавать все индексы за один вызов, а не по отдельности ... Причина: в основном это похоже на переписывание всех страниц индекса, чтобы они включали ваш новый индекс с тем, что еще у него было. Я обнаружил это в прошлом, имея таблицу на 2+ гигабайта, и мне нужно было построить на ней около 15 индексов. Построение всех по отдельности продолжало постепенно увеличиваться во времени между каждым индексом. Тогда попытка всего сразу была немногим больше, чем около трех отдельных индексов, поскольку он строил все для каждой записи и записывал все сразу, вместо того, чтобы постоянно перестраивать страницы.
В моей тестовой базе данных MusicBrainz
таблица дорожка
создает ПЕРВИЧНЫЙ КЛЮЧ
и три вторичные индексы за 25
минут:
CREATE TABLE `track` (
`id` int(11) NOT NULL,
`artist` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`gid` char(36) NOT NULL,
`length` int(11) DEFAULT '0',
`year` int(11) DEFAULT '0',
`modpending` int(11) DEFAULT '0',
PRIMARY KEY (`id`),
KEY `gid` (`gid`),
KEY `artist` (`artist`),
KEY `name` (`name`)
) DEFAULT CHARSET=utf8
В таблице есть 9001870
записей.
Машина представляет собой Intel (R) Core (TM) 2 CPU 6400 @ 2,13 ГГц
с 2 ГБ оперативной памяти
, Fedora Core 12
, MySQL 5.1 .42
.
@@ myisam_sort_buffer_size
равно 256M
.