Archiwa tagu: where

Jak pisać EFEKTYWNIE where

Wersja 1:

Wersja 2:

Przykładowe wywołanie:
EXEC [dbo].[PobierzKlienta] @email = ‚supertajnymail@gmail.com’;

Wersja1: 405 104 odczytów, 848 ms
Wersja2: 6 odczytów, 28 ms

Trzeba trochę więcej napisać, ale SQL Server bardzo słabo radzi sobie z warunkami LUB i takimi zapisami jak w wersji1 w klauzuli WHERE
(nie może wtedy skorzystać z indeksów (najpierw trzeba wiedzieć jak je dobrze dodać(jak ktoś ma jakiś sensowny link to..:))).
Po zastosowaniu instrukcji warunkowej zawsze wykorzystywany jest optymalny Execution Plan (tu Index Seek), a nie skanowanie całej tabeli jak w wersji1.

Reasumując: unikamy jak ognia OR-ów i ISNULLi w WHERE 🙂

PS. Z tego co pamiętam badanie zostało wykonane na wersji SQL Server 2005, zagadką pozostaje jaka będzie różnica w 2008 i 2008R2 😉