правильная оптимизация mysql

236
04 апреля 2017, 13:02

здравствуйте, у меня вопрос допустим есть таблица пользователей, где соответственно есть user (имя пользователя) , во время выборки новостей из бд, нужно так же выводить имя автора, так вот у меня вопрос, лучше и оптимизированней при каждом выводе новостей, выбирать имя пользователя из таблицы user (проверяя совпадения поля author_id у новости, с id пользователем) и выводить соответственно имя пользователя, или сразу же при добавлении новости создать поле author и в него вносить имя пользователя, и выбирать это имя в новости уже вместе со всем остальным?

Так же аналогичная ситуация для комментов, правильнее создать поле comments у новости и при каждом комментировании обновлять число на 1 и выводить его, или же выводить SELECT COUNT ID FROM COMMENTS (тоесть выбирать количество записей в таблице комментариев)

Answer 1

В случае с автором и новостью в большинстве случаев Вам просто нужно использовать JOIN и не хранить имя 2 раза. Повторное хранение имени приводит к денормализации данных (нормальная форма) что не очень правильно при использовании реляционных СУБД как MySQL. Денормализации данных иногда используется, но это сложная тема. Ознакомить можно тут или тут.

Случай с количество комментов же скорее оптимизация: если нет больной нагрузки и все работает нормально, то вариант с SELECT вполне допустим, если скорость работы уже критична то вариант с полем comments будет лучше.

READ ALSO
Сократить код C++

Сократить код C++

Добрый вечер! Есть такой код

205
Как проверить инициализирован ли opengl?

Как проверить инициализирован ли opengl?

Как проверить инициализирован ли OpenGL, функцией glutInit(&argc, argv)?

310
Функция чтения аргументов с файла C++

Функция чтения аргументов с файла C++

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

241
странный синтаксис

странный синтаксис

очень неясно как работает данный код

295