He encontrado un hilo similar pero realmente no capta la esencia de lo que estoy tratando de preguntar, así que he creado un nuevo hilo.¿Qué tan costoso es JOINs en SQL? Y/o ¿cuál es la compensación entre el rendimiento y la normalización?
Sé que hay un equilibrio entre la normalización y el rendimiento, y me pregunto cuál es la mejor práctica para dibujar esa línea? En mi situación particular, tengo un sistema de mensajería que tiene tres tablas distintas: messages_threads (titular de mensaje global), messages_recipients (quién está involucrado) y messages_messages (los mensajes reales + marcas de tiempo).
Para devolver la vista "bandeja de entrada", tengo que unir las tablas message_threads, users table y pictures a las tablas messages_recipients para obtener la información para completar la vista (foto de perfil, nombre del remitente, Identificación del hilo) ... y todavía tengo agregar unirme a los mensajes para recuperar el texto del último mensaje para mostrar una "vista previa" del último mensaje al usuario.
Mi pregunta es: ¿Qué tan costoso es JOINS en SQL para el rendimiento? Podría, por ejemplo, almacenar el nombre del remitente (que tengo que unir de los usuarios para recuperar) bajo un campo en la tabla messages_threads llamado "sendername" - pero en términos de normalización siempre me han enseñado a evitar la redundancia de datos.
¿Dónde trazar la línea? ¿O estoy sobreestimando cómo son las combinaciones de SQL que dificultan el rendimiento?
Gracias pax, tienes razón, debería seguir con ACID.Gracias por aclararme eso, leí un artículo sobre sitios más grandes que se desnormalizaban y empecé a cuestionar mi estructura. – Walker
@Walker, denormalisation _is_ a veces es una opción viable. Solo tienes que asegurarte de que va a ayudar más que obstaculizar :-) Al igual que con la mayoría de la vida, hay compensaciones. – paxdiablo