Usar unidas en consultas elocuentes de Laravel para un mejor rendimiento

Usar unidas en consultas elocuentes de Laravel para un mejor rendimiento
La mayoría de las veces veo personas que cometen muchos errores al interactuar con una base de datos, y muchos principiantes realmente no prestan atención a cuántas llamadas son la marca. Y esto está bien al principio. Especialmente si su aplicación es pequeña y todavía está aprendiendo.

Además, también creo que en los primeros días de la aplicación Laravel, debe centrarse en construir las características y la codificación. Una vez que comience a encontrar problemas y realmente comience a notar que su aplicación es lenta, solo entonces debe analizar lo que puede hacer para optimizar sus consultas MySQL.

El 99% del tiempo usará métodos elocuentes para realizar llamadas de base de datos y, a veces, la ruta fácil que desea tomar, resulta causar problemas en el futuro.

Orm como eloquent es simplemente fantástico y lo apoyará hasta el final.

Ahora imagine que ha estado construyendo su aplicación desde hace algún tiempo y desea refactorizar algunas de sus llamadas para hacerlas un poco más rápido. Pasemos por un ejemplo de cómo puede unir consultas para obtener el mismo resultado, en menos tiempo.

Problema

Considere un código de ejemplo a continuación, que usa el Usuario y Organización tabla para devolver el nombre de usuario.

$ user = user :: find ($ user_id);
$ organización = organización :: where ('id', $ user-> organización_id)-> Pluck ('name')-> first ();

El ejemplo de código anterior es lo suficientemente simple como para entender, pero utiliza dos llamadas separadas a la base de datos. La segunda llamada es obviamente confiable en la primera, por lo tanto, debemos esperar a que la primera termine antes de poder llegar al siguiente.

Solución

Vamos a mejorar este ejemplo de código combinando ambas solicitudes en una sola consulta.

$ user_with_organization = user :: where ('id', $ user_id)
-> Leftjoin ('organizaciones', 'usuarios.organización_id ',' = ',' organizaciones.identificación')
-> Seleccionar ('usuarios.id ',' organizaciones.nombre ')-> Primero ();

Ahora, lo que acabamos de hacer arriba?
1. En primer lugar, nos dirigimos al usuario en función del $ user_id, exactamente la misma consulta que la primera.
2. A continuación, nos unimos a los resultados con la tabla de organizaciones utilizando la tabla de usuarios llenar la consulta de unión a la izquierda
3. Primera consulta obtuvo el modelo de usuario que nos proporciona acceso al organización_id atributo.
4. Seleccionamos la ID de usuario y el nombre de la organización.
5. Finalmente, usamos el primer método (), que garantiza que una vez que encuentre una sola organización que satisfaga el requisito, devolverá el nombre de la organización al instante.

Cómo funciona la izquierda unirse

Cuando tiene dos consultas y desea que se una de la segunda, eso significa que su resultado final será el resultado de su primera consulta, donde algunos de los resultados pueden recibir algo de coincidencia con la segunda consulta y tener algunos datos adicionales con a ellos.

Eso es todo. Ahora tiene una mejor comprensión de cómo funciona la izquierda. Úselo para combinar consultas relacionadas con hacer una sola solicitud a la base de datos. Se ve bastante simple, pero el uso del mismo método puede ayudarlo a optimizar las consultas más complejas que se ocupan de varias tablas.

Si tiene algún comentario o sugerencia, no dude en ponerse en contacto conmigo.