@Byrger
Разработчик ПО для платежных систем

Как распределить таблицы?

Привет

Изучаю вопрос поиска в таблицах MySQL
Как сделать оптимально базу данных.

Сайт - большая доска объявлений на подобии авито. Поиск будет проходить как по всем объявлениям так и по категориям и по под категориям.
База будет насчитывать около 10млн записей активных и 30млн не активных

Вопросы:
- Разделить каждую категорию по таблице или 1 таблицу для всех объявлений.
- Не активные объявления лучше кидать в отдельную таблицу или просто использовать поле Status?
- Какое выражение лучше использовать для поиска? LIKE?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
База будет насчитывать около 10млн записей активных и 30млн не активных

Если это планы на перспективу - не парьтесь, когда(и если) дорастете успеете 10 раз все переписать.

Разделить каждую категорию по таблице или 1 таблицу для всех объявлений

Зависит от того насколько объявления отличаются. Можно общую, можно раздельные, можно общую для пересекающихся полей + дополнительные отдельные. В любом случае 40 000 000 записей это уже тот объем когда надо задуматься о каком то шардировании этого дела, - и это куда более интересный вопрос.

Не активные объявления лучше кидать в отдельную таблицу или просто использовать поле Status?
Хранить в отдельной таблице стоит когда объем активных и архивных отличается хотя бы на порядок. В данном случае это не даст особого профита, но добавит гемороя.

- Какое выражение лучше использовать для поиска? LIKE?
Никакое. Для поиска, особенно на таких объемах надо использовать предназначенные для этого инструменты. Например elasticsearch habrahabr.ru/company/2gis/blog/213765
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы