Задать вопрос
sanchezzzhak
@sanchezzzhak
Ля ля ля...

Данных через запятую поиск?

Добрый день подскажите как поступить с такими данными.

Есть много полей которые содержат 1,2,3,4,5,6 итд эти поля относятся к анкете пользователя.
Я тут подумал

1 Можно разнести такие поля по разным табличкам но таких полей очень много. - Этот вариант отпадает

2 Можно создать 3 таблицы Группа, Поля, Значения. Но 3 таблица расти будет как грибы в геометрической прогрессии.

3 Или оставить как есть и использовать для поиска анкет sphinx только заменить 1,2,3,4,5 на символьные обозначения head body итд.

Какой вариант будет лучше с целью производительности, поиска и удобства вывода?
  • Вопрос задан
  • 2547 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 1
Я бы выбрал пункт 2: нормализация бд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@kuznetsovin
Однозначно ответ из пункта 2
Ответ написан
Комментировать
@whats
То есть вы считаете что если основная таблица состоит из миллионов строк, и в каждой строке есть 1 поле один ко многим нормализация лучший вариант ? А если связь эта минимум будет состоять из 10 значений ? Таблица в 10 миллионов строк ? Абсолютно не нужная таблица выборка по которой будет замедляться с каждым новым значением в основной таблице.
Сейчас базы спокойно умеют работать с последовательностями и на производительности по всем тестам это гораздо лучше нормализации. В Постгресе давно уже массивы данных придумали, в mysql find_in_set и небольшая пользовательская функция спокойно нагнут вашу нормализацию.

Я за 3 вариант. Только вот сфинкс не умеет джоинить такие поля. Нужно уже на бэкенде обрабатывать эти числа и подставлять туда значения, либо создавать вторую колонку где уже будут сопоставления ид.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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