SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Możliwe kroki w celu poprawy wydajności zapytań SQL Server

Pierwsze Run query z Sql Server Management Studio i spójrz na plan zapytania, aby zobaczyć, gdzie jest szyjka butelki. Każde miejsce, w którym zobaczysz „skanowanie tabeli” lub „skanowanie indeksu”, musi przejrzeć wszystkie dane, aby znaleźć to, czego szuka. Jeśli utworzysz odpowiednie indeksy, których można użyć do tych operacji, powinno to zwiększyć wydajność.

Poniżej wymieniono kilka wskazówek dotyczących poprawy wydajności zapytania sql.

Unikaj wielu połączeń w jednym zapytaniu

Staraj się unikać pisania zapytania SQL przy użyciu wielu sprzężeń, które obejmują sprzężenia zewnętrzne, stosowanie krzyżowe, stosowanie zewnętrzne i inne złożone zapytania podrzędne. Ogranicza możliwości wyboru przez Optymalizatora w zakresie decydowania o kolejności i typie łączenia. Czasami Optymalizator jest zmuszony do używania złączeń w pętli zagnieżdżonej, niezależnie od konsekwencji wydajności w przypadku zapytań z nadmiernie złożonymi zastosowaniami krzyżowymi lub podzapytaniami.

Usuń kursory z zapytania Spróbuj usunąć kursory z zapytania i użyj zapytania opartego na zestawie; Zapytanie oparte na zestawie jest bardziej wydajne niż oparte na kursorze. Jeśli istnieje potrzeba użycia kursora, należy unikać kursorów dynamicznych, ponieważ ogranicza to wybór planów dostępnych dla optymalizatora zapytań. Na przykład dynamiczny kursor ogranicza optymalizator do korzystania z zagnieżdżonych połączeń pętli.

Unikaj używania nieskorelowanych podzapytań skalarnych Możesz ponownie napisać zapytanie, aby usunąć nieskorelowane podrzędne zapytanie skalarne jako oddzielne zapytanie zamiast części zapytania głównego i przechowywać dane wyjściowe w zmiennej, do której można się odwoływać w zapytaniu głównym lub późniejszej części partii. Zapewni to Optymalizatorowi lepsze opcje, co może pomóc w zwróceniu dokładnych szacunków kardynalności wraz z lepszym planem.

Unikaj wartościowych funkcji tabeli z wieloma wypowiedziami (TVF) Wielowyrazowe TVF są droższe niż wbudowane TFV. SQL Server rozszerza wbudowane TFV do głównego zapytania, tak jak rozszerza widoki, ale ocenia wieloinstrukcyjne TVF w innym kontekście niż zapytanie główne i materializuje wyniki wieloinstrukcji w tymczasowe tabele robocze. Oddzielny kontekst i stół roboczy sprawiają, że wielowyrazowe transmisje TVF są kosztowne.

Utwórz wysoce selektywny indeks Selektywność określa procent kwalifikujących się wierszy w tabeli (kwalifikująca liczba wierszy/całkowita liczba wierszy). Jeśli stosunek kwalifikującej liczby wierszy do łącznej liczby wierszy jest niski, wskaźnik jest wysoce selektywny i najbardziej użyteczny. Indeks nieklastrowy jest najbardziej przydatny, jeśli współczynnik wynosi około 5% lub mniej, co oznacza, że ​​indeks może wyeliminować z rozważania 95% wierszy. Jeśli indeks zwraca więcej niż 5% wierszy w tabeli, prawdopodobnie nie zostanie użyty; albo zostanie wybrany lub utworzony inny indeks, albo tabela zostanie przeskanowana.

Umieść kolumnę w indeksie Kolejność lub pozycja kolumny w indeksie również odgrywa istotną rolę w poprawie wydajności zapytań SQL. Indeks może pomóc w poprawie wydajności zapytania SQL, jeśli kryteria zapytania są zgodne z kolumnami, które są najbardziej pozostawione w kluczu indeksu. Zgodnie z najlepszą praktyką większość selektywnych kolumn powinna być umieszczona po lewej stronie klucza indeksu nieklastrowego.

Usuń nieużywane indeksy Usunięcie nieużywanych indeksów może przyspieszyć modyfikacje danych bez wpływu na ich pobieranie. Ponadto należy zdefiniować strategię dla procesów wsadowych, które działają rzadko i korzystają z określonych indeksów. W takich przypadkach tworzenie indeksów przed procesami wsadowymi, a następnie usuwanie ich po zakończeniu procesów wsadowych, pomaga zmniejszyć obciążenie bazy danych.

Tworzenie i aktualizowanie statystyk Musisz zadbać o tworzenie statystyk i regularne aktualizacje dla przeliczonych kolumn i wielokolumn, do których odnosi się zapytanie; optymalizator zapytań wykorzystuje informacje o rozkładzie wartości w jednej lub kilku kolumnach statystyki tabeli w celu oszacowania liczności lub liczby wierszy w wyniku zapytania. Te oszacowania kardynalności umożliwiają optymalizatorowi zapytań stworzenie wysokiej jakości planu zapytań.

Ponownie zapoznaj się z definicjami schematów Na koniec ponownie przejrzyj swoje definicje schematów; miej oko na to, że odpowiednie ograniczenia KLUCZ OBCY, NOT NULL i CEHCK są na miejscu, czy nie. Dostępność odpowiedniego ograniczenia we właściwym miejscu zawsze pomaga poprawić wydajność zapytania, na przykład ograniczenie FORIGEN KEY pomaga uprościć sprzężenia, konwertując niektóre sprzężenia zewnętrzne lub sprzężenia częściowe na sprzężenia wewnętrzne, a ograniczenie CHECK również pomaga, usuwając niepotrzebne lub nadmiarowe predykaty.

Informacje




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Błąd serwera Microsoft SQL:18456

  2. Debugowanie w SQL Management Studio 2012

  3. Utwórz niestandardową pozycję menu w Eksploratorze obiektów

  4. SQL Server Management Studio rozłączone po okresie bezczynności

  5. Gdzie mogę sprawdzić typ tabeli definiowanej przez użytkownika w programie SQL Server 2008 w programie SSMS? i jak wstawić do niego nową kolumnę?