Предположим, у меня есть две таблицы stuff
и search_index
. По разным причинам я бы предпочел сгенерировать пользовательскую таблицу индексов со схемой в соответствии со следующим:
Я считаю, что это должна быть отдельная таблица, поскольку для поддержки FULLTEXT потребуется MyISAM
механизм хранения. Все остальные мои таблицы InnoDB
для поддержки транзакций.
search_index (MyISAM):
-----------------------
stuff_id BIGINT PRIMARY
keywords TEXT FULLTEXT ; Not same as text in `stuff`
; (optimised & space delimited)
Как часто search_index
таблица должна обновляться:
Всякий раз, когда stuff
записей создаются или обновляются.
Периодически проверять «грязные» stuff
записи и обновлять search_index
соответственно.
Другое ...
Я считаю, что преимущество 1 будет проще поддерживать, и поиск сразу вступит в силу, но с немедленным переиндексированием в базе данных. 2 не будет таким эффективным, но вся переиндексация может произойти за один удар. Это правда?
Насколько эффективен MySQL при вставке / обновлении записей, имеющих индексацию FULLTEXT?
Дополнительное примечание: я пытаюсь сделать схему максимально переносимой (разные драйверы rdbms с PDO)