Saltar al contenido

Laravel Eloquent vs query builder: por qué usar elocuent para disminuir el rendimiento

Solución:

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 de una base de datos o eliminar.

Se beneficiará mucho de las funciones de Eloquent, como la verificación sucia (para enviar SQL UPDATE solo para los campos que se han cambiado), 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 suaves, sus rasgos personalizados) carga ansiosa / perezosa, etc. También puede aplicar un patrón controlado por dominio e implementar algunas piezas de lógica comercial en sus entidades de registro activo, por ejemplo, validación, administració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, para informes, para procesamiento por lotes, etc.), el Laravel simple DB métodos es un mejor enfoque.

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

Sí, en algún caso tienes razón. Cuando tengamos más datos y casi en todos los sitios, los datos no son realmente pequeños. Luego es mejor usar DB Query que Eloquent Query.

en un problema de rendimiento de Eloquent VS DB He oído que,

Insertar 1000 filas para una tabla simple Eloquent toma 1.2 segundos y en ese caso las fachadas DB toman solo 800 mili segundos (ms).

Entonces, ¿por qué elocuente? ¿No es necesario eso?

La respuesta es: elocuente también es necesario. Porque-

Para crear una mejor relación y obtenga los resultados a la vista con tanta sintaxis simple, cuando sea necesario unirse.

Eloquent es también para quienes no tienen mucho conocimiento de consultas SQL.

Un marco MVC seguir las reglas de legibilidad del código, mantenibilidad del código y lo que es Eloquent, lo sabes. Una comparación de código a continuación. Evidentemente, Eloquent es mejor para leer.

// In Eloquent
$student = AppStudent::find($id);

// In DB facade
$student = DB::table('student')->where('id', $id)->first();

La parte mas importante es si nosotros quiere cambiar otra base de datos, entonces la consulta sin formato será un gran dolor de cabeza para nosotros y en ese caso Laravel Eloquent resolverá todos los problemas con una mano. Puede manejar diferentes tipos de bases de datos.

Entonces, cuando usamos las fachadas Eloquent y When DB:

  1. Cuando trabajemos en un sitio de registros simple y pequeño con CRUD simple y los registros no son hechos, entonces use Eloquent allí.
  2. Cuando trabajemos en muchos registros, es mejor usar DB Query que Eloquent.

Entonces, finalmente se aclara que: cuándo usaremos Database Query y Cuándo usaremos Eloquent Query.

Editar – Ejemplo de la vida real

  1. Estoy haciendo un Sitio web de la universidad. Que puede contener máximo 5,000 teachers and 10,000 students and some notices and files. Entonces es mejor hacer esto con Laravel Eloquent simple que es muy estándar y legible.
  2. Ahora estoy creando un sitio como Desbordamiento de pila. Que puede contener más de 1,000,0000 (1 crore) posts and many more things. Debo elegir las fachadas DB convencionales allí. Es más rápido buscar las publicaciones de tantos registros.

Puede verificar el rendimiento de su consulta usando Laravel Debugbar (un paquete popular para verificar el rendimiento / ejecución de consultas de Eloquent / Database)

Ahora es tu elección. Lo que quieres hacer …

Puede consultar aquí un código completo comparando el código con el rendimiento, el consumo de memoria y la calidad del código sobre estos: https://devsenv.com/tutorials/laravel-eloquent-vs-db-query-builder-performance-and-other-statistics

Por qué Laravel Eloquent:

  1. Ejecutando consulta en un OOP conducta.
  2. Fácil de usar que la consulta sin formato o query builder.
  3. No vinculante con table schema. es decir, incluso si cambia el nombre de su mesa, no es necesario tocar un solo query(puede haber 1000 query) para que funcione. Simplemente cambie el nombre de la tabla en elocuente model.
  4. La relación entre tablas se puede mantener de manera elegante. Solo menciona el tipo de relación, nada más (JOIN, LEFT JOIN, RIGHT JOIN etc.) necesarios en la consulta para obtener datos de tablas relacionadas.
  5. Las consultas son altamente legibles mientras se escriben usando Eloquent en comparación con Query Builder.
  6. Puede utilizar métodos, alcances, accesos, modificadores, etc. dentro de un modelo que es fácil de mantener.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *