sql >> Database >  >> RDS >> Mysql

Laravel Eloquent vs query builder - Waarom welsprekend gebruiken om de prestaties te verminderen?

Welsprekend is Laravel's implementatie van het Active Record-patroon en het komt met al zijn sterke en zwakke punten.

Active Record is een goede oplossing voor het verwerken van een enkele entiteit op CRUD-manier - dat wil zeggen, maak een nieuwe entiteit met gevulde eigenschappen en sla deze vervolgens op in een database, laad een record uit een database of verwijder deze.

U zult veel profijt hebben van de functies van Eloquent, zoals vuile controle (om alleen SQL-UPDATE te verzenden voor de velden die zijn gewijzigd), modelgebeurtenissen (bijvoorbeeld om administratieve waarschuwingen te verzenden of statistiekentellers bij te werken wanneer iemand een nieuw account heeft aangemaakt), traits ( tijdstempels, zachte verwijderingen, uw aangepaste eigenschappen) gretig/lui laden enz. U kunt ook domeingestuurde patronen toepassen en enkele stukjes bedrijfslogica in uw Active Record-entiteiten implementeren, bijvoorbeeld validatie, relaties beheren, berekeningen enz.

Maar zoals u al weet, heeft Active Record een prestatieprijs.

Wanneer u één record of enkele records verwerkt, hoeft u zich geen zorgen te maken. Maar voor gevallen waarin u veel records leest (bijvoorbeeld voor datagrids, voor rapporten, voor batchverwerking, enz.) De gewone Laravel DB methoden is een betere benadering.

Voor onze op Laravel gebaseerde applicaties gebruiken we beide benaderingen zoals we dat gepast achten. We gebruiken Laravel's Eloquent voor UI-formulieren om één record te verwerken en DB te gebruiken methoden (ondersteund door SQL-views met extra database-engine-specifieke prestatie-tweaks) om gegevens op te halen voor UI-tabellen, exporttaken enz. Het werkt ook goed met RESTful API's - Welsprekend voor GET, PUT, POST, DELETE met een sleutel en DB voor GET zonder sleutel maar met filters en sorteren en pagineren.



  1. Top 5 gratis hulpprogramma's voor databaseontwerp

  2. MariaDB SUBSTR() uitgelegd

  3. Er kan slechts één uitdrukking worden opgegeven in de selectielijst als de subquery niet wordt geïntroduceerd met EXISTS

  4. PostgreSQL INSERT ON CONFLICT UPDATE (upsert) gebruik alle uitgesloten waarden