BazyDanych Info

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