2010-01-26 10 views
7

Zadaję to pytanie stackoverflow, ponieważ jego właściwe miejsce, aby zapytać ...Porady na temat optymalizacji zapytań SQL Server [2005]

Znam jego bardzo rozległy temat, aby rozpocząć, ale niektóre małe te, które może być naprawdę przydatny ...

To może być przydatne dla młodych twórców jak ja wiedzieć o optymalizacji zapytań ..

Niektóre Porady o optymalizacji zapytań w SQL Server 2005 ..

Odpowiedz

2

podstawie pytań tutaj

  • Unikać typu danych pierwszeństwa (np zawsze dużo jak dla podobnych, w tym długości varchar itp)

np

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • Unikaj funkcjami kolumny w klauzulach WHERE

np

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • Pokrycie indeksy

  • GUID: nie skupione indeksy

1

Najbardziej oczywistym miejscem do rozpoczęcia, jeśli masz wolne zapytanie, jest upewnienie się, że używa indeksu.

+0

w zarządzaniu studio, uruchom polecenie ** set showplan_all na **, a następnie uruchom zapytanie. Zapytania nie będą działać, ale plan wykonania zostanie zrzucony. Sprawdź w tym wyjściu słowo * scan * tam nie jest używany indeks. –

1
  • Spróbuj zmniejszyć liczbę całkowitą złączeń jeśli to możliwe
  • C onsider rozmiary Stół użyty w zapytaniu
  • Stosować indeksy, ponieważ są one twój przyjaciel
  • Uważaj na typach używasz jako klucze (int int jest znacznie łatwiejsze porównanie niż dwa varchars)
  • Unikaj używania " jak”kwerend w miarę możliwości starają się uzyskać wartość używając pierwszego
1

przypadku pytań równość mogę dodać do gbn, recursive i smaclell poniższych:

  • próbować zminimalizować podzapytania, dołącza
  • uniknąć ryglowania excessing, oszczędzając punkty kontrolne
  • użytku pragma ustawić tworzenie tabeli temp w pamięci
  • użytku pragma ustawić synchronicznych OFF
  • użytku pragma wyłączyć wyzwalaczy (jeśli to możliwe)
  • osadzić INSERT i DELETE zapytań w transakcjach
  • czasami UPDATE jest wolniejszy dla wielu rekordów, niż tylko je wkładając ponownie. Tak więc zaleca się, aby SELECT, DELETE niż programowo zaktualizować rekordy i włożyć z istniejących kluczy (uważaj na CASCADE i TRIGGERS)
  • skontaktować się z administratorami sys że DB cache powinien być na
Powiązane problemy