Toor-SQL-i kasutamisel Laravelis tuleb meeles pidada mitmeid toimivuskaalutlusi.
1. Toores SQL vs. kõnekas ORM
Toores SQL võib keeruliste päringute puhul olla kiirem kui Eloquent ORM, eriti kui tegemist on suurte andmekogudega. Selle põhjuseks on asjaolu, et Eloquent ORM genereerib SQL-päringuid dünaamiliselt, mis võib põhjustada aeglasema jõudluse võrreldes töötlemata SQL-päringutega, mis on optimeeritud konkreetsete andmebaasitoimingute jaoks[4].
2. Indekseerimine
Andmebaasi tabelite õige indekseerimine võib päringu jõudlust oluliselt parandada. See on eriti oluline töötlemata SQL-i kasutamisel, kuna see võimaldab teil määrata konkreetsed indeksid, mida oma päringutes kasutada. Eloquent ORM toetab ka indekseerimist, kuid see ei pruugi alati kasutada kõige tõhusamaid indekseid[1].
3. Päringu optimeerimine
Toores SQL-päringuid saab jõudluse parandamiseks käsitsi optimeerida. See hõlmab selliseid tehnikaid nagu indeksite kasutamine, valitud veergude arvu piiramine ja tarbetute liitumiste vältimine. Eloquent ORM toetab ka päringute optimeerimist, kuid see ei pruugi alati kasutada kõige tõhusamaid meetodeid[2].
4. Andmebaasiühendus
Kasutatav andmebaasiühendus võib samuti jõudlust mõjutada. Näiteks MySQL-i andmebaasi kasutamine suure jõudlusega salvestusmootoriga, nagu InnoDB, võib päringu jõudlust parandada võrreldes aeglasema salvestusmootori, nagu MyISAM[1], kasutamisega.
5. Mälukasutus
Toores SQL-päringud võivad kulutada rohkem mälu kui kõnekad ORM-päringud, eriti kui tegemist on suurte andmekogumitega. Seda seetõttu, et töötlemata SQL-päringud nõuavad päringutulemuste salvestamiseks sageli rohkem mälu. Eloquent ORM seevastu kasutab vähem mälu, hankides vaid vajalikud andmed[2].
6. Turvalisus
Toores SQL-päringud võivad põhjustada turvariske, kui neid korralikult ei puhastata. Seda seetõttu, et töötlemata SQL-päringud võivad olla SQL-i süstimise rünnakute suhtes haavatavad. Eloquent ORM seevastu pakub selliste rünnakute vältimiseks sisseehitatud turvafunktsioone[3].
7. Silumine
Toores SQL-päringuid võib olla raskem siluda kui kõnekaid ORM-i päringuid. Selle põhjuseks on asjaolu, et töötlemata SQL-päringud ei paku samal tasemel silumisinfot kui Eloquent ORM-päringud. Eloquent ORM pakub üksikasjalikku teavet täidetavate päringute kohta, muutes jõudlusprobleemide tuvastamise ja parandamise lihtsamaks[2].
8. Koodi loetavus
Toores SQL-päringud võivad muuta koodi vähem loetavaks, eriti keerukate päringute puhul. Eloquent ORM seevastu pakub oma sujuva liidese abil loetavamat ja hooldatavamat viisi päringute kirjutamiseks[3].
9. Andmebaasi ühilduvus
Toores SQL-päringud võivad olla andmebaasi suhtes vähem agnostilised kui kõnekad ORM-päringud. Seda seetõttu, et töötlemata SQL-päringud on kasutatavale andmebaasile spetsiifilised, samas kui kõnekaid ORM-päringuid saab kasutada erinevates andmebaasides minimaalsete muudatustega[4].
10. Toimivuse jälgimine
Toores SQL-päringuid võib jõudlusprobleemide osas olla raskem jälgida. Selle põhjuseks on asjaolu, et töötlemata SQL-päringud ei paku samal tasemel jõudluse jälgimise teavet kui Eloquent ORM-päringud. Eloquent ORM pakub üksikasjalikku teavet täidetavate päringute kohta, muutes jõudlusprobleemide tuvastamise ja parandamise lihtsamaks[2].
Kokkuvõtteks võib öelda, et töötlemata SQL-päringud võivad olla keerukamate päringute jaoks kiiremad ja tõhusamad kui Eloquent ORM-päringud, kuid need toovad kaasa ka turvariske ning neid võib olla raskem siluda ja hooldada.
Tsitaadid:[1] https://deliciousbrains.com/optimizing-laravel-database-indexing-performance/
[2] https://dev.to/jringeisen/laravel-performance-boost-3h4i
[3] https://laravel.io/forum/04-23-2014-eloquent-vs-raw-sql-which-is-really-better
[4] http://www.diva-portal.org/smash/get/diva2:1014983/FULLTEXT02
[5] https://stackoverflow.com/questions/47138952/laravel-eloquent-vs-selectraw-how-does-it-effect-on-query-performance