Za pomocą instrukcji
JOIN
(w klauzuli
FROM
) można uwzględnić tabelę w zapytaniu zamiast w podrzędnym zapytaniu w klauzuli
WHERE
. Ta wskazówka ma zastosowanie, nawet jeśli dane tabeli są potrzebne do filtrowania, a nie do uzyskania zestawu wyników.
Połączenie wielu tabel w klauzuli
FROM
działa lepiej niż użycie podrzędnego zapytania w klauzuli
WHERE
.
Należy unikać instrukcji SQL, które nie korzystają z indeksów. Te instrukcje obejmują użycie funkcji agregacji w podzapytaniu, instrukcji
UNION
w podzapytaniu lub klauzuli
ORDER BY
z instrukcją
UNION
.
Indeks może znacznie zwiększyć szybkość przetwarzania zapytania
SELECT
. Jednak niektóre fragmenty składni SQL uniemożliwiają bazie danych korzystanie z indeksów i zmuszają ją do wykonywania operacji wyszukiwania i sortowania na rzeczywistych danych.
Należy unikać stosowania operatora
LIKE
, szczególnie z wiodącym znakiem wieloznacznym np.:
LIKE('%XXXX%')
.
Operacja
LIKE
obsługuje stosowanie wyszukiwań z wykorzystaniem znaków wieloznacznych, dlatego działa wolniej niż porównania z założeniem dokładnej zgodności. W szczególności, jeśli ciąg wyszukiwania rozpoczyna się symbolem wieloznacznym, baza danych nie będzie mogła w ogóle użyć indeksów w wyszukiwaniu. W zamian baza danych będzie musiała użyć wyszukiwania pełnotekstowego w każdym wierszu tabeli.
Należy unikać stosowania operatora
IN
. Jeśli możliwe wartości są z góry znane, wówczas operacja
IN
może zostać zapisana za pomocą operatorów
AND
lub
OR
, które zapewniają szybsze wykonanie.
Druga z poniższych dwóch instrukcji jest wykonywana szybciej. Dzieje się tak, ponieważ wykorzystuje ona proste wyrażenia równości połączone z operatorem
OR
zamiast instrukcji
IN()
lub
NOT IN()
:
-- Slower
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary IN (2000, 2500)
-- Faster
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary = 2000
OR salary = 2500
W celu zwiększenia wydajności należy rozważyć stosowanie alternatywnych form instrukcji SQL.
Poprzednie przykłady demonstrują, że sposób zapisania instrukcji również może wpłynąć na wydajność bazy danych. Często istnieje wiele sposobów pisania instrukcji SQL
SELECT
w celu pobrania określonego zestawu wyników. W niektórych przypadkach instrukcja zapisana w jeden określony sposób będzie działać znacznie szybciej niż zapisana inaczej. Dodatkowe informacje na temat instrukcji SQL i ich wydajności zawierają dedykowane materiały dotyczące języka SQL.
|
|
|