sql >> Databasteknik >  >> RDS >> Mysql

Laravel Eloquent vs frågebyggare - Varför använda vältalig för att minska prestandan

Eloquent är Laravels implementering av Active Record-mönster och det kommer med alla dess styrkor och svagheter.

Active Record är en bra lösning för att bearbeta en enstaka enhet på CRUD-sätt - det vill säga skapa en ny enhet med ifyllda egenskaper och sedan spara den i en databas, ladda en post från en databas eller ta bort.

Du kommer att ha mycket nytta av Eloquents funktioner såsom dirty checking (för att bara skicka SQL UPDATE för de fält som har ändrats), modellhändelser (t.ex. att skicka administrativa varningar eller uppdatera statistikräknare när någon har skapat ett nytt konto), egenskaper ( tidsstämplar, mjuka borttagningar, dina anpassade egenskaper) ivrig/lat laddning etc. Du kan också tillämpa domändrivet mönster och implementera vissa delar av affärslogik i dina Active Record-enheter, till exempel validering, hantering av relationer, beräkningar etc.

Men som du redan vet kommer Active Record med ett visst prestandapris.

När du bearbetar en enskild post eller några få poster är det inget att oroa sig för. Men för fall när du läser massor av poster (t.ex. för datanät, för rapporter, för batchbearbetning etc.) den vanliga Laravel DB metoder är ett bättre tillvägagångssätt.

För våra Laravel-baserade applikationer använder vi båda metoderna som vi ser lämpliga. Vi använder Laravels Eloquent for UI-formulär för att behandla en enda post och använda DB metoder (stödda av SQL-vyer med ytterligare databasmotorspecifika prestandajusteringar) för att hämta data för UI-tabeller, exportuppgifter etc. Det fungerar också bra med RESTful API:er - Eloquent för GET, PUT, POST, DELETE med en nyckel och DB för GET utan nyckel men med filter och sortering och personsökning.



  1. Hur man visar aktuella anslutningar i MySQL Workbench med hjälp av GUI

  2. Hur byter man databaser i postgres?

  3. Hur kontrollerar man tabellutrymme i Oracle SQL Developer?

  4. Avancerad SQL:CROSS APPLY och OUTER APPLY