MS SQL Server und Performance steigern bei SQL-Abfrage

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich habe auf meinen Server eine Tabelle die momentan 500.000 Datensätze umfasst.
Desöftern müssen Auswertungen für den aktuellen Tag oder den aktuellen Monat gefahren werden.
Select ArtikelNr, etc. from.... where Datum = .....
Das dauert ja so ziemlich lange, weil er ja jeden Satz überprüfen muss.
Kann man die Abfrage irgendwie beschleunigen? Hab da mal so was von "Index setzen"
gehört, weiß aber leider nicht mehr wie das funktioniert....

Danke schon mal

Grüße
 
so mehr oder weniger beides, wie gesagt, habe zwar schon irgendwann mal was davon gehört, aber ich weiß es nicht mehr.
Eine Auffrischung für einen Anfänger wie mich wär schon super....
 
Stell dir vor, du suchst einen Namen in einem Telefonbuch, z.b. Zlatko :). Du fängst nicht auf der ersten Seite des Telefonbuches an zu schauen ob der Name dort ist, da du ja weisst, dass Namen die mit einem "Z" anfangen, ganz hinten zu finden sind. Ein Telefonbuch ist sortiert und du weisst sofort, wo du welchen Namen findest. So macht das auch MySQL. In einer Tabelle mit 5 Mio Einträgen werden also nicht alle Einträge durchsucht. So wie auch du in einem Telefonbuch nachschaust, schaut auch MySQL nach. Der Name fängt mit "Z" an, der zweite Buchstabe ist ein "L", der dritte ein "A" etc. So können alle Namen ausgeschlossen werden, die nicht mit "Z" anfangen, deren zweiter Buchstabe kein "L" ist etc. Sehr vereinfacht aber annährend verständlich hoffe ich :D
 
okay, also mit einem Index kann ich praktisch die Auswahl eingrenzen, die er durchläuft...
kann man dann einen Index auch auf ein Datum setzen oder geht das nur auf Zahlen?
Einrichten muss ich den Index doch wenn ich meine Tabelle mit Design Table aufrufe oder?
Welche Einstellungen muss man dabei noch beachten?
 
Naja, einrichten kann man Indices generell auf zwei Arten (wie alles andere auch):

1. direkt per Code (erfordert aber SQL-Kenntnisse)
2. im Designer

Per Designer geht in diesem Fall so:

- Rechtsklick auf die Tabelle und Eintrag "Ändern" um die Tabelle zu verändern, wenn du erst grade ne Tabelle erstellst wird das Menü automatisch angezeigt
- Icon Indizes und Schlüssel verwalten (oder über Menü/TabellenDesigner)
- Hinzufügen
- Bei Spalten die Spalten eintragen
- Speichern
 
Worauf man einen Index setzt ist immer schwer zu sagen. Ob nun auf eine bestimmte Spalte oder mehrere zusammenhängende Spalten usw. Desweiteren muss man sich im Klaren darüber sein, dass ein Index zwar die Abfrage erheblich beschleuningen kann, allerdings auch das Einfügen neuer Datensätze erheblich verlangsamen kann. Ich bin mit meinen tabellen ziemlich sparsam was einen Index angeht. Ich setze sie wirklich nur dort, wo ich sie auch wirklich brauche..
 

Neue Beiträge

Zurück