Полнотекстовое индексирование на MyISAM, один столбец против индексации нескольких столбцов
У меня очень большая таблица (4M + строки) с дисковым пространством более 40 ГБ (данные 14 ГБ и индекс 28 ГБ). Мне нужен был полнотекстовый поиск по нескольким полям, как объединенным, так и разделенным, а это означало, что мне нужно было сделать возможным полнотекстовый поиск по одному и нескольким столбцам вместе, как показано ниже:
для комбинированного поиска
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_a`, `column_c`, `column_x`) AGAINST ('+$search_quesry*' IN BOOLEAN MODE);
для отдельного поиска
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_a`) AGAINST ('+search_query*' IN BOOLEAN MODE);
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_c`) AGAINST ('+search_query*' IN BOOLEAN MODE);
SELECT `column_a`, `column_b` FROM `table_1` WHERE MATCH (`column_x`) AGAINST ('+search_query*' IN BOOLEAN MODE);
Вот мой вопрос У меня есть оба следующих набора, уже определенные как индексы, которые занимают 24 ГБ + дисковое пространство. Я сделал это правильно или достаточно одного сета?
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`, `column_c`, `column_x`);
и / или
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_c`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_x`);
ИЛИ ЖЕ
ALTER TABLE `table_1` ADD FULLTEXT (`column_a`);
ALTER TABLE `table_1` ADD FULLTEXT (`column_c`, `column_x`);
Это главным образом для уменьшения необходимого дискового пространства, а также для повышения производительности. Любое лучшее предложение более чем приветствуется. Спасибо :)
Постскриптум Числа кардинальности кажутся различными дляcolumn_a
когда индексируются объединены и разделены.