Der Füllfaktor eines Index

Frage:
Die Einstellung des Füllfaktors soll optimiert werden.

Lösung:
Die Einstellung ist abhängig von der Verwendung der Tabelle.

Werden häufig Daten geändert oder hinzugefügt, sollte der Füllfaktor einen geringen Prozentwert enthalten.
Dadurch werden die Indexseiten nur zu dem angegebenen Grad gefüllt und es bleibt Platz für weitere Einträge.
Ein zu hoher Füllfaktor hätte eine Fragmentierung der Daten zur Folge.

Werden die Daten mehr gelesen als verändert, ist ein hoher Füllfaktor empfehlenswert.
Dadurch werden die Indexseiten mehr gefüllt und die Anzahl der Indexseiten gering gehalten.

/* übernommen aus der Original sqlfaq.de */

Dynamisches SQL optimieren

Frage:
Wie kann dynamisches SQL optimiert werden?

Lösung:
Dynamisches SQL sollte grundsätzlich vermieden werden, da es vom Abfrageoptimierer nicht erkannt und somit bei jeder Ausführung erneut kompiliert wird. Ergo geht der Vorteil des gespeicherten Ausführungsplans verloren.

Theoretisch ist die Vermeidung von dynamischem SQL leicht gesagt; praktisch aber manchmal notwendig und unumgänglich. Wenn es denn gar nicht anders geht, sollte dynamisches SQL aber per sp_executesql und nicht mit dem einfachen Execute ausgeführt werden.

Bei sp_executesql ist es lt. Onlinehilfe „wahrscheinlich“, dass der Ausführungsplan wiederverwendet wird.

/* übernommen aus der Original sqlfaq.de */

Vergleich mit Ausdrücken vermeiden

Frage:
Ein Vergleich mit Where preis + 1 > 2 führt zu einem TableScan, obwohl die Spalte indiziert ist.

Lösung:
Ein berechneter Ausdruck sollte innerhalb eines Vergleichs so formuliert werden, dass er nur auf einer Seite der Bedingung steht.
Nur so kann der Index genutzt werden. In dem angeführten Beispiel würde Where preis > 1 dasselbe Ergebnis liefern.

/* übernommen aus der Original sqlfaq.de */

Negative Vergleiche vermeiden

Frage:
Wie kann eine Abfrage mit einem not equal-Vergleich (<>) in der WHERE-Bedingung optimiert werden?

Lösung:
Grundsätzlich sollten Vergleiche mit not equal (<>) vermieden werden, da ein Vergleich mit equal schneller ausgeführt
wird.

Das mag im ersten Moment nicht so einfach sein, in vielen Fällen aber kann ein not equal auch mit einer Kombination aus anderen Operatoren umgesetzt werden.

/* übernommen aus der Original sqlfaq.de */

SQL Server Reporting Services 2005

SQL Server Reporting Services 2005 – Konzept, Anwendung und Entwicklung

Ausführlicher 2-teiliger Vortrag mit umfangreichen Praxisbeispielen

– Das Konzept der Reporting Services
– Entwickeln eines Berichts
– Verwalten eines Berichts und des Berichtsservers
– Bereitstellen eines Berichts
– Entwickeln mit dem Berichtsdesigner

April 2007 – SQL Server Entwickler-Konferenz (SEK) – Nürnberg

Download

Doppelte Datensätze ermitteln und löschen

Elmar Boyes Skript listet die doppelten Datensätze einer Tabelle auf.
doppsaetze.zip

Martina Sebastiano geht noch einen Schritt weiter und löscht mit ihrem Skript alle doppelten Datensätze, wobei jedoch einer der doppelten erhalten bleibt.
deldopds.zip

Eine weitere Möglichkeit, doppelte Datensätze zu löschen, stellt Christoph Muthmann mit seinen Skript vor.
deldoppsaetze.zip

/* übernommen aus der Original sqlfaq.de */