Загрузка сервера: функции MySQL против PHP

Вот моя ситуация:

Ситуация:

У меня есть пользователи, и у меня есть несколько значений в нескольких категориях для каждого пользователя.

У меня есть два варианта:

I. Создайте новую таблицу "Значения":

 user_ID   category   value 

  ...        ...       ...
   5          1        aaa
   5          1        bbb
   5          2        ccc
   5          2        ddd
   5          2        eee
   6          1        xxx
   6          2        yyy
   6          1        zzz

II. В моей реальной таблице с пользователями - "пользователи":

user_ID (unique)         values  
        5             aaa,bbb$$ccc,ddd,eee
        6             xxx,zzz$$yyy

... где я сохраняю значения в виде текста и анализирую их с помощью разделительных категорий ',' и '$$'.

До сих пор я занимался некоторыми мелочами вторым способом, но теперь я ожидаю много значений и категорий для этой базы данных, и мне интересно, что даст мне меньшую нагрузку на сервер - имея очень большую таблицу базы данных MySQL и пройдусь по ней на каждой странице, чтобы увидеть, какие значения принадлежат текущему пользователю; или получить все и только его значения из сравнительно небольшой таблицы, но каждый раз анализировать строку с помощью PHP, чтобы сделать ее пригодной для использования?

2 ответа

Решение

Первый способ - это то, для чего строится реляционная база данных. У вас также есть дополнительное преимущество индексов, которое позволит ускорить его даже при довольно большом наборе данных.

Кроме того, он позволяет запрашивать данные с другого направления - выбрать всех пользователей с категорией 2, равной 'eee'

Вставка неизвестного количества данных в поле - очень плохая идея, так как вы не знаете, как измерить их в первую очередь. Более того, ваша БД не сможет проиндексировать ее любым полезным способом, и производительность будет падать по мере роста системы.

Размещение категорий и значений в отдельной таблице хорошо масштабируется, и, как уже сказал Адам, это и есть реляционная БД.

Возможно, вы захотите Google "нормализация базы данных" и просмотреть некоторые результаты для получения дополнительной информации.

Другие вопросы по тегам