Задача: сделать быстрый поиск по нескольким таблицам. Например, пользователь вводит в строку поиска слово «биткоин» и результатом должен быть список постов, тегов, пользователей.
- Первый вариант сделать отдельные запросы к каждой таблице (сущности)
Плюсы:
- Простая и прозрачная логика
Минусы:
- Сущностей (таблиц по которым нужно искать) гораздо больше, как следствие это дорогостоящая операция.
- Второй вариант сделать общую таблицу, в которую буду помещать строку сущности для поиска, тип и id всех сущностей.
title | type | id
Иван Иванов | user | 1
Apple news | post | 54
Toster | tag | 12
Плюсы:
- Быстрый поиск по одной таблице
- По результатам выборки с одной таблицы, можно чётко узнать какие сущности есть, чтобы сделать отдельный запрос к конкретной сущности для выборки дополнительной информации. Например, вводим «Иван» и результат с одной таблицы говорит, что у нас есть только пользователи по такому запросу и не нужно лезть в посты и теги
Минусы:
- Таблица будет очень быстро расти
- Нужно следить за всеми сущностями и обновлять название, если они изменились
Какой подход лучше с точки зрение производительности и правильности архитектуры БД? А также жду ваши решения.