[ Deep|Blue @ 08.03.2006. 23:41 ] @

Problematicna mi je tabela sa malo vecim brojem slogova i izvrsavanje izraza
select count(polje_a) from tabela where ...

Ono sto mi je logicno da polje_a bude indeksirano, kao i polja po kojima se vrsi filtriranje u where bloku.
Nedoumicu imam oko Polja_a. Da li ce izvrsavanje ovakvog iskaza biti brze ukoliko je polje_a klaster indeks ili ne???
sta mislite

[ Zidar @ 09.03.2006. 15:00 ] @
Nemoj da radis COUNT(field_name)
Brze je uvek COUNT(*), radi brze definitivno. COUNT(field_name) proverava ima li NULL vrednosti ili nema , pa to broji. COUNT(*) broji rekorde.

Index generalno treba da bude po WHERE uslovu. CLUSTER ili NON CLUSTERED? Ne postoji tacan odgovor. U razlicitim uslovima query optimizer ce izabrati razlicite startegije. Pogledaj execution plan za razlicite slucajeve i videces sta SQL misli o tome.

Pazi, execution plan mora da ide na full size tabeli. Ako radis na praznoj ili test tabeli sa malo podataka, SQL nece upotrebiti ni jedan indeks. Ako je samo jedna tabela u pitanju, exportuj je celu u test bazu i tamo probaj razlicte nacine indeksiranja. I budi siguran da ti je statistika OK. probaj, i videces sta radi najbolje.

:-)

[Ovu poruku je menjao Zidar dana 09.03.2006. u 16:27 GMT+1]