Witam
W ramach praktyki tworzę przeglądarkową grę transportową i mam pytanie odnośnie wydajności jednej z funkcji
Oto ona:
public function SprawdzCzyWykonanoZlecenie()
{
//poniżej sprawdzam czy czas zlecenia danego użytkownika minął tzn czy zlecenie zostało wykonane
$SprawdzCzyWykonanoZlecenie = DB::select("SELECT * FROM zlecenia, ladunki, users WHERE zlecenia.czastrwaniazleceniaz <= ? AND zlecenia.iduzytkownikz = ? AND users.id = ?",[time(),Auth::id(),Auth::id()]);
$IdLaczenia = [];
//niestety w tej pętli są dwa zapytania do bazy danych
foreach($SprawdzCzyWykonanoZlecenie as $WykonaneZlecenie)
{
//saldo po dodaniu zaplaty za wykonane zlecenie
$Saldo = $WykonaneZlecenie->zaplataladunek + $WykonaneZlecenie->waluta;
//aktualizacja salda po otrzymaniu zapłaty za wykonane zlecenie
DB::update("UPDATE users SET waluta = ? WHERE id = ?",[$Saldo,Auth::id()]);
//usunięcie wykonanego zlecenia - jest ono już niepotrzebne
DB::delete("DELETE FROM zlecenia WHERE zlecenia.idz = ?",[$WykonaneZlecenie->idz]);
}
Pytanie brzmi:
Powyższy kod ma trzy zapytania do bazy z czego dwa moga się wykonać wiele razy - czy jest to odpowiednie rozwiązanie czy powinienem rozważyć inne rozwiązanie tego problemu.
Zaznaczę że powyższa funkcja wywoływana jest podczas wejścia na podgląd zleceń.
Szczerze mnie te zapytania do bazy danych rażą w oczy, czy słusznie ?
Za pomoc z góry dziękuję
Pozdrawiam