Я нашел подобный поток, но на самом деле он не отражает суть того, что я пытаюсь спросить, поэтому я создал новый поток.
Я знаю, что есть компромисс между нормализацией и производительностью, и мне интересно, что лучше всего подходит для рисования этой линии? В моей конкретной ситуации у меня есть система обмена сообщениями, в которой есть три различные таблицы: messages_threads (основной владелец сообщения), messages_recipients (кто участвует) и messages_messages (фактические сообщения + отметки времени).
Чтобы вернуть представление "Входящие", я должен оставить в таблице messages_threads таблицу, таблицы пользователей и рисунков таблицы tables_recipients, чтобы получить информацию, чтобы заполнить представление (изображение профиля, имя отправителя, поток id)... и я все еще добавляю соединение к сообщениям для извлечения текста из последнего сообщения, чтобы отобразить "предварительный просмотр" последнего сообщения для пользователя.
Мой вопрос: насколько дорого стоит JOINS в SQL? Я мог бы, например, сохранить имя отправителя (которое я должен покинуть присоединиться к пользователям для извлечения) под полем в таблице messages_threads с именем "sendername" - но с точки зрения нормализации меня всегда учили избегать избыточности данных?
Где вы рисуете линию? Или я переоцениваю, как сбой производительности SQL-соединений?