mal ne Frage zum Index mal wieder...

12/11/2008 - 17:01 von Mario Schulz | Report spam
Hallo,

ich hab da eine Tabelle Bestand

SELECT Sum(Bestand.LgrBestandSoll) FROM Bestand WHERE

Macht es Sinn in die WHERE Klausel noch ein " AND Bestand.LgrBestandSoll !=
0"

und auf das nummerische Feld "LgrBestandSoll" einen Index zu legen ?

Bin gerade etwas durcheinander was mir der Query-Analyser dazu sagt...

Danke für eine Erhellung,


concept Software
Web : www.concept-dv.de

** Alle haben gesagt es ist unmöglich dies zu machen, da kam einer der
wusste es nicht und hat es einfach gemacht! **
 

Lesen sie die antworten

#1 Elmar Boye
12/11/2008 - 18:29 | Warnen spam
Hallo Mario,

Mario Schulz schrieb:
ich hab da eine Tabelle Bestand

SELECT Sum(Bestand.LgrBestandSoll) FROM Bestand WHERE

Macht es Sinn in die WHERE Klausel noch ein " AND Bestand.LgrBestandSoll !=
0"



Normalerweise nicht, denn die Spalte muß sowieso gelesen werden.
Ob nun Null addiert oder Null ausgelassen wird, macht wenig Unterschied.

und auf das nummerische Feld "LgrBestandSoll" einen Index zu legen ?



Wenn Du (sehr hàufig) ohne weitere Kriterien zugreifst, kann das lohnen,
da dann direkt über den Index summiert wird - ansonsten ist ein
Cluster Index/Table Scan fàllig.
Allerdings hast Du dann einen Index nur für die eine Abfrage,
der gepflegt sein will - für eine selten genutzte Abfrage
nicht zu empfehlen.

Wenn weitere Spalten als Kriterien hinzukommen, könnte ein Covering Index
die Abfrage beschleunigen.
Ab SQL Server 2005 wàre die INCLUDE Klausel für Indizes eine Alternative;
SQL Server 2008 kennt zudem gefilterte Indizes, womit man Spalten mit 0
ausschließen kann:
<URL:http://msdn.microsoft.com/de-de/lib...3.aspx>
(siehe dort Beispiele G. und I.)

Gruß Elmar

Ähnliche fragen