Optymalizacja baz danych to dość trudny temat. Każda baza danych jest inna i może potrzebować różnych metod strojenia. Oto niektóre z najczęstszych miejsc, które należy sprawdzić w celu poprawy.
Tworzenie właściwych indeksów
Jednym z najprostszych sposobów na przyspieszenie zapytań do bazy danych jest tworzenie indeksów. Ponieważ tak łatwo jest je utworzyć, są one zwykle rozwiązaniem go-to. Chociaż istnieje małe zastrzeżenie – musisz wiedzieć, jakie kolumny umieścić w indeksach. Ponieważ są one tak łatwe w użyciu, możesz chcieć stworzyć wszystkie możliwe kombinacje indeksów – co byłoby złym pomysłem. Przy każdym wykonaniu zapytania baza danych będzie musiała przeanalizować, który indeks będzie najlepszy do użycia – a to również zajmuje czas.
Optymalizacja zapytań SQL
Pisanie zapytań SQL jest podobne do pisania funkcji w twojej bazie kodu. Zazwyczaj istnieje kilka sposobów na osiągnięcie tego samego wyniku, ale tylko garstka z nich jest optymalna. Jeśli masz wolne zapytania, zwłaszcza jeśli są długie i skomplikowane, istnieje duża szansa, że możesz je przepisać w bardziej optymalny sposób.
Powiązane podzapytania
Podkwerendy skorelowane są doskonałym miejscem do przyspieszenia czasu wykonywania zapytań. Ponieważ są one wykonywane ponownie na każdym wierszu, powinieneś używać ich tylko wtedy, gdy nie ma innej możliwości. Ale jak je zastąpić? Istnieje kilka opcji:
- przepisać zapytanie z regularnymi
JOIN
- użycie zapytań
WITH
Ponieważ podzapytania są tak łatwe do napisania, są również łatwe do użycia w niewłaściwym miejscu. Powinieneś przeanalizować swoje zapytania i sprawdzić, czy możesz je przepisać za pomocą JOIN
.
Jeśli nie możesz wymyślić sposobu na użycieJOIN
w zapytaniu, a masz dostęp do gołego SQL, możesz spróbować użyć zapytania WITH
.Utworzy ono CTE – Common Table Expression – czyli zestaw wyników niektórych zapytań. Ten zestaw wyników będzie przechowywany tylko na czas wykonania zapytania.
Pobieraj tylko niezbędne dane
Innym sposobem na pośrednie przyspieszenie zapytania jest zmniejszenie rozmiaru zestawu wyników. Zmniejszy to ilość danych, które muszą być pobrane, co zmniejszy czas wykonania. Możesz to osiągnąć poprzez usunięcie zbędnych kolumn w zapytaniach. Innym sposobem na zmniejszenie rozmiaru zestawu wyników jest wdrożenie paginacji.
Diagnostyka
Inną ważną częścią optymalizacji jest sprawdzenie, czy wszystkie zmiany, które wprowadziłeś, były użyteczne. W większości silników baz danych możesz ustawić logowanie zapytań. Możesz albo zalogować wszystkie zapytania i mieć ogromną ilość danych, ale większość z nich prawdopodobnie będzie bezużyteczna. Możesz skonfigurować logger, aby złapać tylko zapytania, które przekraczają pewien czas trwania. W ten sposób będziesz zbierał tylko wolne zapytania.
Po zebraniu wszystkich tych danych możesz użyć swojej bazy danych, aby sprawdzić plany wykonania każdego zapytania. Powinno to pozwolić Ci określić dlaczego Twoje zapytania są wolne i dać Ci pomysł jak możesz je przyspieszyć.