Forum: ASP Classic |
Thema:
Re: SQL Server 2000: Optimierung Tabellen-Design (sehr viele Datensätze!!) |
Von:
G. Guest (
23.04.2006 11:36) |
Hallo
Ich weiß nicht ob dir die "klassischen Antworten" klar sind
> Gibt es für die Anzahl der Datensätze in einer Tabelle eine Obergrenze?
Jede DB hat eine maximalzahl an Datensätzen, die sie aufnehmen kann. Diese Zahl kann man abschätzen durch die Größe einen Indexes, der auf einen Datensatz zeigt. Aber bei dreistelligen Millionen sähe ich keine Probleme. Aber es gibt verschiedene SQL-Server-Versionen (Lizenzen) und hier ist der Speicherplatz beschränkt. Das könnte weit eher ein Problem werden.
> Wie kann ich das Design der Tabelle so optimieren, dass einfache SELECT-Statements in einer akzeptablen Zeit ausgeführt werden?
Darauf gibt es keine allgemeine Antwort, denn die Antwort selbst hängt vom Problem ab. Du solltest Nebenindizies einführen und die SQL-Abfrage darauf ansetzen. Nehme ein Beispiel:
Alle Bewohner Deutschlands in einer DB - (zweistelliger Millionenbereich) - und du suchst nach den Nachnamen, Straße und Geburtstag. Dann wird die Suche schneller, wenn du für jedes Feld Indexfelder einführst. Dafür wird das Integrieren einen neuen Datensatzes in die DB eben langsamer.
Weiterhin solltest du die ClR nicht nutzen (innerhalb der Suche!), denn diese würde die Performance in die Knie zwingen.
Und du könntest - solltest - einfach mal überprüfen ob die Reihenfolge in der die Bedingungen abgearbeitet werden, einen Einfluss hat auf die Geschwindigkeit.
Nehmen wir an, du hast drei Bedingungen und die erste Bedingung liefert für sich alleine 10 Mio Datensätze, die zweite Bedingung für sich alleine 1 Mio und die dritte 100.000 Datensätze. Dann würde ich vermuten, dass eine Suche in der Reihenfolge 3-2-1 die schnellste ist (wenn alle drei Suchfelder indiziert sind!). Eine solche Reihenfolgeoptimierung bedeutet aber, dass du
a) diese einmal verifizieren musst
b) eine Abschätzung brauchst über mögliche Zeitgewinne beim Umsortieren der Suchanweisung
c) ggf. diese Abschätzungen und die Umsortierungen dann vor die Suche zu integrieren hast.
Bei der Bevölkerungstabelle würde ich zum Beispiel bei einem Namen wie Müller oder Schmidt und einem bestimmten Tag als Geburtstag immer erst nach dem Geburtstag und dann nach dem Nachnamen suchen. Wenn man aber einen seltenen Namen sucht und ein Jahrzehnt zur Auswahl hat in dem der Geburtstag liegt, dann ist es unter Umständen umgekehrt besser.
Darüber hinaus gibt es m.E. keine allgemeinen Tipps sondern nur spezielle und darüber kann man nur sprechen, wenn man das spezielle Problem kennt.
Herzliche Grüße
Wolfgang
Betreff |
Von |
Datum |
|
|
Wolfgang
Uhr
|
23.04.2006 11:38 |
|
|
Alex
Franz
|
02.06.2006 15:46 |
|
|
Jens
Buthe
|
02.06.2006 16:56 |
|
|
Andreas
Rauch
|
04.06.2006 18:32 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!