Optymalizaja zapytań SQL i bazy danych – 10 przykazań
„10 przykazań SQL” to poradnik pomagający uniknąć pułapek w jakie najczęściej wpadają początkujący użytkownicy baz danych i programiści SQL.
Radzimy wydrukować, zapamiętać i bezwzględnie przestrzegać poniższych informacji, które pomogą z pewnością utrzymać dobre relacje z lokalnym DBA:
Nie używaj operatora NOT IN – być może składnia jest nieco mniej intuicyjna, aczkolwiek zdecydowanie wydajniejsza jest klauzula NOT EXISTS.
Unikaj zapytań z użyciem DISTINCT. Lepiej i wydajniej jest użyć GROUP BY.
Nie używaj operatorów nierówności: ‘<>’, ‘=!’. O wiele korzystniej i wydajniej jest włączyć nawet dużą listę niż wykluczyć z zapytania pojedyncze rekordy.
Nie używaj klauzul IS (NOT) NULL. Wartości NULL często powodują problemy w obsłudze wektora wyników (np w aplikacjach klienckich), wymagają użycia dodatkowych funkcji do obsługi itp. Najlepiej jest zamieniać puste wartości na konkretny znak lub liczbę i w tej postaci przechowywać je w bazie danych.
Poprzedzaj nazwę tabeli właścicielem tabeli w części FROM zapytania. Unikniesz dzięki temu dwuznaczności i kłopotów.
W poleceniach INSERT zawsze jawnie wymieniaj listę kolumn. W przeciwnym wypadku każda zmiana struktury tabeli będzie generować błędy
Funkcja COUNT - w każdym wypadku lepiej będzie użyć COUNT(1) niż COUNT(*)
Przy łączeniu wielu tabel zwróć uwagę na kolejność występowania złączeń. Zawsze najkorzystniej będzie ograniczyć jak największą ilość wierszy w pierwszym złączeniu.
Zawsze przed wykonaniem SQL przyjrzyj się planowi wykonania zapytania (EXPLAIN PLAN).
Nie używaj funkcji SQL w części WHERE zapytania. Rozważ dodanie kolumny z wartością wynikową działania funkcji, a jeżeli użycie funkcji jest niezbędne, to korzystaj z indeksów bazujących na funkcjach (function-based indexes).
Staraj się też nie używać symboli wieloznacznych na początku szukanego słowa klauzuli WHERE w wyrażeniu LIKE. Czyli dużo wydajniejsze będzie wyszukiwanie nazwisko LIKE ‘K%owalski’ niż nazwisko LIKE ‘%owalski’, nawet jeżeli na tym polu jest założony jakiś indeks, to nie zostanie on wykorzystany poprawnie .
Business Intelligence
Usługi konsultingowe i wdrożenia systemów Business Intelligence i projektowania hurtowni danych.
www.goliinfo.com