[ 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]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.