Korzystanie z połączeń w elokwentnych zapytaniach dotyczących lepszej wydajności

Korzystanie z połączeń w elokwentnych zapytaniach dotyczących lepszej wydajności
Najczęściej widzę ludzi popełniających wiele błędów podczas interakcji z bazą danych, a wielu początkujących tak naprawdę nie zwraca uwagi na to, ile połączeń tworzy. I na początku jest w porządku. Zwłaszcza jeśli aplikacja jest mała i nadal się uczysz.

Ponadto uważam również, że na początku aplikacji Laravel powinieneś skupić się na budowaniu funkcji i kodowaniu. Gdy zaczniesz napotykać problemy i zaczniesz zauważać, że aplikacja jest powolna, tylko wtedy powinieneś sprawdzić, co możesz zrobić, aby zoptymalizować zapytania MySQL.

99% czasu będziesz używać wymownych metod do wykonywania połączeń bazy danych, a czasem łatwej trasy, którą chcesz wybrać, okazuje się.

Orm jak elokwent jest po prostu fantastyczny i będzie wspierać cię aż do końca.

Teraz wyobraź sobie, że budujesz swoją aplikację od jakiegoś czasu i chcesz przetworzyć niektóre z swoich połączeń, aby je nieco przyspieszyć. Przejdźmy do przykładu, w jaki sposób możesz dołączyć do zapytań, aby uzyskać ten sam wynik, w krótszym czasie.

Problem

Rozważ przykładowy kod poniżej, który używa Użytkownik I Organizacja Tabela, aby zwrócić nazwę użytkownika.

$ user = user :: Find ($ user_id);
$ organizacja = organizacja :: gdzie („id”, $ user-> organizacja_id)-> pluck ('name')-> fert ();

Powyższy przykład kodu jest wystarczająco prosty, aby zrozumieć, ale używa dwóch oddzielnych połączeń do bazy danych. Drugie połączenie jest oczywiście niezawodne na pierwszym, dlatego musimy poczekać, aż pierwszy zakończy się, zanim będziemy mogli dojść do następnego.

Rozwiązanie

Popraw ten przykład kodu, łącząc oba żądania w jedno zapytanie.

$ user_with_organization = user :: gdzie („id”, $ user_id)
-> leftjoin („organizacje”, „użytkownicy.organizacja_id ',' = ', „organizacje.ID')
-> Wybierz (użytkownicy.Id ', „Organizacje.Nazwa ')-> FIRST ();

Teraz to, co właśnie zrobiliśmy powyżej?
1. Najpierw kierujemy użytkownika na podstawie $ user_id, dokładnie to samo zapytanie co pierwsze.
2. Następnie dołączamy do wyników z tabelą organizacji za pomocą tabeli użytkowników Wypełnij lewe zapytanie łączące
3. Pierwsze zapytanie złapało model użytkownika, który zapewnia nam dostęp do organizacja_id atrybut.
4. Wybieramy identyfikator użytkownika i nazwę organizacji.
5. Wreszcie, używamy metody pierwszej (), która zapewnia, że ​​gdy znajdzie jedną organizację, która spełni wymaganie, natychmiast zwróci nazwę organizacji.

Jak działa lewe Join

Kiedy masz dwa zapytania i chcesz dołączyć do drugiego, oznacza to, że wynik końcowy będzie wynikiem pierwszego zapytania, w którym niektóre z wyników mogą otrzymać pewne dopasowanie do drugiego zapytania i mieć dodatkowe dane z ich.

Otóż ​​to. Teraz lepiej rozumiesz, jak działa Left Join. Użyj go, aby połączyć zapytania, które są powiązane, aby złożyć jedno żądanie do bazy danych. Wygląda dość prosto, ale użycie tej samej metody może pomóc w optymalizacji najbardziej złożonych zapytań dotyczących wielu tabel.

Jeśli masz jakieś komentarze lub sugestie, skontaktuj się ze mną.