У меня есть чрезвычайно большая таблица (4M + строки) с дисковым пространством более 40 ГБ (14 ГБ данных и 28 Гб индексом). Я нужен полнотекстовый поиск по нескольких полям и комбинированных и разделен, что означает, что мне нужно было сделать это возможным полнотекстовой поиск на оба одиночных колоннах и нескольких столбцов вместе, как показано ниже:Полнотекстовое индексирование на MyISAM, один столбец и индексирование нескольких столбцов
для комбинированного поиска
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);
Это мой вопрос. У меня есть оба следующих набора, уже определенные как индексы, которые вызывают дисковое пространство 24Gb +. Я сделал это правильно или достаточно одного набора?
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`);
Это главным образом к уменьшению требуемого дискового пространства, а также более высокую производительность. Любое лучшее предложение более чем приветствуется. Спасибо :)
P.S. Номера мощности выглядят по-разному для column_a
при индексировании объединены и разделены.
Итак, если я конвертирую из MyISAM в InnoDB, имея 4 индекса, определяющих вместо одного в MyISAM, не займет больше места на диске? Также этот тип определяющих индексов в InnoDB достаточно для чего-то вроде этого '' SELECT 'column_a',' column_b' FROM 'table_1' WHERE MATCH (' column_a', 'column_c') ПРОТИВ ('+ $ search_quesry *' В РЕЖИМЕ BOOLEAN); 'или мне нужно определить новый индекс? Оперирует ли порядок? – SAVAFA
Индексы FT InnoDB намного меньше (по причинам, которые я не понимаю). –
Предложите вам экспериментировать с 10% ваших данных - посмотрите, насколько велики индексы и сколько разных индексов действительно необходимы и т. Д. Вы попадаете в область, где у меня есть только частичные знания. –