sql >> Base de Datos >  >> RDS >> Mysql

Laravel Eloquent vs generador de consultas:¿Por qué usar eloquent para disminuir el rendimiento?

Eloquent es la implementación de Laravel del patrón Active Record y viene con todas sus fortalezas y debilidades.

Active Record es una buena solución para procesar una sola entidad en forma CRUD, es decir, crear una nueva entidad con propiedades completas y luego guardarla en una base de datos, cargar un registro desde una base de datos o eliminarlo.

Se beneficiará mucho de las funciones de Eloquent, como la verificación sucia (para enviar ACTUALIZACIÓN de SQL solo para los campos que se han modificado), eventos de modelo (por ejemplo, para enviar alertas administrativas o actualizar contadores de estadísticas cuando alguien ha creado una nueva cuenta), rasgos ( marcas de tiempo, eliminaciones temporales, sus características personalizadas) carga ansiosa/perezosa, etc. También puede aplicar un patrón controlado por dominio e implementar algunas piezas de lógica empresarial en sus entidades de Active Record, por ejemplo, validación, gestión de relaciones, cálculos, etc.

Pero, como ya sabe, Active Record tiene un precio de rendimiento.

Cuando procesa un solo registro o algunos registros, no hay nada de qué preocuparse. Pero para los casos en los que lee muchos registros (por ejemplo, para cuadrículas de datos, informes, procesamiento por lotes, etc.), el DB simple de Laravel métodos es un mejor enfoque.

Para nuestras aplicaciones basadas en Laravel, estamos utilizando ambos enfoques según lo consideremos apropiado. Usamos Eloquent de Laravel para formularios de interfaz de usuario para procesar un solo registro y usar DB métodos (respaldados por vistas SQL con ajustes de rendimiento específicos del motor de base de datos adicionales) para recuperar datos para tablas de interfaz de usuario, tareas de exportación, etc. También funciona bien con API RESTful:elocuente para GET, PUT, POST, DELETE con una clave y DB para GET sin clave pero con filtros y clasificación y paginación.