2010-01-26 12 views
7

ich diese Frage in Stackoverflow bin frag, weil sie die richtige Stelle zu fragen ...Tipps und Tricks über die Abfrageoptimierung [SQL Server 2005]

Ich wissen, es ist ein sehr großes Thema zu beginnen, aber einig klein diejenigen, die kann sehr praktisch sein ...

Es könnte für junge Entwickler wie mich nützlich wissen, über die Abfrageoptimierung ..

Einige Tipps und Tricks über Abfrageoptimierung in SQL Server 2005 ..

Antwort

2

Basierend auf Fragen hier

  • Vermeiden Datentyp Vorrang (zB immer viel wie für wie, einschließlich der Länge der varchar usw.)

zB

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • Vermeiden Funktionen auf Spalten in WHERE-Klauseln

zB

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • Covering Indizes

  • GUIDs: nicht gruppierte Indizes

1

Wenn Sie eine langsame Abfrage starten, sollten Sie sicherstellen, dass ein Index verwendet wird.

+0

im Management tätig sein sollte studio, führe den Befehl aus ** set showplan_all on ** und führe deine Anfrage aus. Die Abfrage wird nicht ausgeführt, aber der Ausführungsplan wird ausgegeben. Suchen Sie in dieser Ausgabe nach dem Wort * scan *. Hier wird ein Index nicht verwendet. –

1
  • Versuchen Sie, Ihre Gesamtzahl zu verringern, der wenn möglich
  • C schließt sich onsider die Tabellengrößen in der Abfrage verwendet
  • Indizes verwenden, wie sie sind dein Freund
  • die Typen für Pass auf Sie als Schlüssel verwenden (int int ist ein viel einfacher Vergleich als zwei Varchars)
  • Vermeiden Sie ' wie die Anfragen wenn möglich versuchen, den Wert zu erhalten, indem eine Gleichheit erste
1

Bei Fragen kann ich gbn, recursive und smaclell die folgenden hinzu:

  • versuchen Subqueries zu minimieren, schließt sich
  • keine excessing Schließungen vermeiden, Checkpoints
  • Verwendung pragmas Speichern Temp Tabellenerstellung im Speicher
  • Verwendung pragmas einstellen Synchron OFF
  • Verwendung pragmas einstellen deaktivieren Trigger (wenn möglich)
  • einbetten INSERT und DELETE Abfragen in Transaktionen
  • manchmal UPDATE für mehrere Datensätze langsamer ist als nur um sie wieder einsetzen. So SELECT wird empfohlen, DELETE, als programmatisch die Datensätze zu aktualisieren und neu INSERT mit den vorhandenen Tasten (achten Sie auf CASCADE und TRIGGERS)
  • Scheck mit Ihrem Systemadministratoren, die DB-Cache auf