Spisie treści
Niektóre zapytania zużywają więcej zasobów niż inne. Na przykład zapytania, które zwracają duże zestawy wyników i te, które zawierają klauzule WHERE, które nie są unikatowe, zawsze wymagają dużych zasobów. Żaden stopień inteligencji baz danych sql nie jest dobry w optymalizacji zapytań ani nie może wyeliminować kosztu zasobów tych konstrukcji w porównaniu z mniej złożonym zapytaniem.Te same wyniki możemy uzyskać, pisząc różne zapytania SQL. Jednak użycie najlepszego zapytania jest ważne przy rozważaniu wydajności. SQL Tuning to proces zapewniający, że instrukcje SQL generowane przez aplikację zostaną wykonane w możliwie najkrótszym czasie.Te zapytania SQL można zoptymalizować w celu uzyskania lepszej wydajności.
Techniki optymalizacji lub dostrajanie SQL
Następnie zobaczymy kilka technik optymalizacji
PRZYPADEK 1: Zapytanie SQL staje się szybsze, jeśli użyjesz nazw pól niż * jako zapytania wszystkich pól tabeli
WYBIERZ * OD klientów
Bardziej optymalnym rozwiązaniem jest napisanie zapytania w ten sposób
SELECT id, nazwa, adres FROM klientów
PRZYPADEK 2: Klauzula HAVING służy do filtrowania wierszy po zaznaczeniu wszystkich wierszy.
SELECT przedmiot, liczba (studentów) liczba_studentów FROM zapisanych WHERE przedmiot = 'Chemia' AND przedmiot = 'Historia' GROUP BY przedmiot;
Bardziej optymalnym rozwiązaniem jest napisanie zapytania w ten sposób
SELECTmateria, liczba (studenci) liczba_alumnów FROM zapisanych GROUP BY przedmiot POSIADAJĄCY przedmiot = „Chemia” ORAZ przedmiot = „Historia”
PRZYPADEK 3: Czasami możemy mieć więcej niż jedno podzapytanie w głównym zapytaniu. Zobaczmy w poniższym przykładzie, jak zminimalizować blok podzapytania w zapytaniu.
Konsultujemy najstarszego i najlepiej opłacanego pracownika.
SELECT nazwa FROM pracownicy WHERE pensja = (SELECT MAX (wynagrodzenie) FROM pracownicy) AND wiek = (SELECT MAX (wiek) FROM pracownicy) AND kategoria = 'Elektronika';
Bardziej optymalne jest napisanie zapytania w następujący sposób
SELECT nazwa FROM pracownicy WHERE (wynagrodzenie, wiek) = (SELECT MAX (wynagrodzenie), MAX (wiek) FROM pracownicy) AND item = 'Elektronika';
PRZYPADEK 4: Użycie w zapytaniu operatora EXISTS, IN i złączeń tabel jest ważne, ponieważ są to transakcje, które spowalniają dostęp do danych.
Ogólnie najwolniejsza wydajność w zapytaniu canda.
IN jest wydajne, gdy większość kryteriów filtrowania znajduje się w podzapytaniu.
Opcja Exist jest skuteczna, gdy większość kryteriów filtrowania znajduje się w głównym zapytaniu.
Zobaczmy kilka przykładów
Wybierz * z produktu p, gdzie product_id IN (wybierz product_id z zamówień)
Bardziej optymalne jest napisanie go w następujący sposób
Wybierz * z produktu, w którym ISTNIEJE (wybierz * z zamówień, w których orders.product_id = product.product_id)
Posługiwać się istnieć zamiast ODRĘBNY
Przykład zobacz, w jakich kategoriach dostępne są książki
SELECT DISTINCT kategorie.id, kategorie.kategorie FROM kategorie, książki GDZIE kategorie.id = książki.idcategory;
Bardziej optymalne jest napisanie zapytania w następujący sposób
SELECT DISTINCT kategorie.id, kategorie.kategorie FROM kategorie WHERE ISTNIEJE (WYBIERZ 'X' FROM książki WHERE books.idcategory = kategorie.id);
Oto kilka wskazówek, które oszczędzą zasoby podczas wykonywania zapytań sql, a tym samym będą miały aplikację z szybszymi odpowiedziami.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt