Это возможная проблема, потому что я потерял больше времени, чтобы подумать, как сделать правильно, думая наиболее оптимизированным способом.
У меня есть таблица «Содержание», и мне нужно добавить опцию, чтобы связать несколько «хэштегов», «тегов» или «ключевых слов» с содержимым, например, такое содержимое, как «жареный картофель с кетчупом», имеет отметку « ключи »:« картофель »,« кетчуп »и« жареный ».
И когда я выполняю поиск по слову, например «картофель», мне нужно показать содержимое, в котором есть теги этого слова.
Вопрос в том, какая структура лучше всего подходит для этого, учитывая скорость получения результатов, потому что таблица содержимого является MyISAM с более чем 30 миллионами строк.
Я думаю так:
Создайте еще 2 таблицы, «contents_hashtags» (id (INT11), content_id (INT11), hashtag_id (INT11))
и «hashtags» (id (INT11), хэштег (VARCHAR (40)))
2 таблицы в InnoDB
Когда пользователь создает / изменяет содержимое таблицы, я ищу в таблице хэштегов и получаю идентификаторы, если хэштег не t существует, создайте его в хэштеге таблицы, если существует, получите идентификатор, используя эти идентификаторы, создайте вставки в таблице content_hashtas, связывая содержимое <-contents_hashtas-> hashtahs
В поиске сделайте JOINS (LEFT / RIGHT / ВНУТРЕННИЙ чувак ..) и сделай поиск по LIKE ?? точным (hashtag = "XXX") или ПОЛНЫМ ТЕКСТОВЫМ ПОИСКОМ?
Этот метод правильный / быстрый? Я не знаю, как запустить это с большим количеством строк и большим трафиком ..