Macht so ein Index Sinn? SQL 2005 SP2

25/02/2009 - 15:49 von Christa Kurschat | Report spam
Hallo NG,

ich habe eine Menge Importtabellen, 17 an der Zahl, die alle über 2 Felder
verknüpft sind. Der Aufbau in eine Gesamt-Tabelle dauert z.Zt. ungefàhr 1
1/2 Stunden für ca. 700.000 DS. Das ist mir eigentlich zu lange.

Der Optimierer schlàgt mir nun u.a. folgenden Index vor:
CREATE NONCLUSTERED INDEX
[_dta_index_imp_Part1_6_407672500__K1_K2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_32_33_]
ON [dbo].[imp_Part1]
(
[PAS_Rechner_Bezeichnung] ASC,
[LFD_Spauf_nummer] ASC
)
INCLUDE ( [Haupt_KDNR],
[KDNR],
[Frachtzahler],
[Frachtzahler_Name],
[Frachtzahler_Laender_Iso_Code],
[Frachtzahler_Strasse_HNR],
[Frachtzahler_PLZ],
[Frachtzahler_Ort],
[Erloes_Abrechnungsbereich],
[Uebernahmedatum],
[Erfassungsnummer],
[Firma],
[Haus],
[Abteilung],
[Abteilungsbezeichnung],
[Produktnr],
[Produktbezeichnung],
[Recall_Service],
[Erledigungsstatus],
[Zustelldatum],
[Versender_Matchcode],
[Versender_Name],
[Versender_Laender_ISO_Code],
[Versender_PLZ],
[Versender_Ort],
[Empfaenger_Matchcode],
[Empfaenger_Name],
[Empfaenger_Lender_ISO_Code],
[Empfaenger_PLZ],
[Empfaenger_Ort],
[Abw_Versender_Matchcode],
[Neutralitaetskennzeichen],
[Abw_Empfaenger_Matchcode],
[Warenwert],
[Frankatur],
[Frankaturbezeichnung],
[Versender_Nachnahme],
[Auftragsnummer_Versender],
[Waehrung_Versendernachnahme],
[Routing_Order_KZ],
[Logistikmodell],
[Zeichnr],
[Wareninhalt],
[Lieferscheinnummer],
[Abrechnungskennzeichen],
[KG_frachtpflichtig],
[KG_effektiv],
[Kubikmeter],
[Lademeter],
[Anzahl_Europaletten],
[Anzahl_Gitterboxen],
[Anzahl_VP_Kat_1],
[Anzahl_VP_Kat_2],
[Anzahl_VP_Kat_3]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

Was alle Felder in der Tabelle sind. macht das Sinn?

Bei allen anderen bis auf 2 schlàgt er gruppierte Indizes vor, was ich ja
noch einsehe.
Insgesamt meint er damit eine Verbesserung von 69 % zu bewirken.

Es stellt sich mir ja auch noch die Frage, was passiert beim Import? Wird
der dann um diese 69 % langsamer?

Optimierungen sind immer noch ein Buch mit mind. 5 Siegeln ;-))

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.org
 

Lesen sie die antworten

#1 Gregor Stefka
25/02/2009 - 16:05 | Warnen spam
"Christa Kurschat" schrieb im Newsbeitrag
news:
Hallo NG,

ich habe eine Menge Importtabellen, 17 an der Zahl, die alle über 2 Felder
verknüpft sind. Der Aufbau in eine Gesamt-Tabelle dauert z.Zt. ungefàhr 1
1/2 Stunden für ca. 700.000 DS. Das ist mir eigentlich zu lange.

Der Optimierer schlàgt mir nun u.a. folgenden Index vor:
CREATE NONCLUSTERED INDEX
[_dta_index_imp_Part1_6_407672500__K1_K2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20_21_22_23_24_25_26_27_28_29_30_31_32_33_]
ON [dbo].[imp_Part1]
(
[PAS_Rechner_Bezeichnung] ASC,
[LFD_Spauf_nummer] ASC
)
INCLUDE ( [Haupt_KDNR],
[KDNR],
[Frachtzahler],
[Frachtzahler_Name],
[Frachtzahler_Laender_Iso_Code],
[Frachtzahler_Strasse_HNR],
[Frachtzahler_PLZ],
[Frachtzahler_Ort],
[Erloes_Abrechnungsbereich],
[Uebernahmedatum],
[Erfassungsnummer],
[Firma],
[Haus],
[Abteilung],
[Abteilungsbezeichnung],
[Produktnr],
[Produktbezeichnung],
[Recall_Service],
[Erledigungsstatus],
[Zustelldatum],
[Versender_Matchcode],
[Versender_Name],
[Versender_Laender_ISO_Code],
[Versender_PLZ],
[Versender_Ort],
[Empfaenger_Matchcode],
[Empfaenger_Name],
[Empfaenger_Lender_ISO_Code],
[Empfaenger_PLZ],
[Empfaenger_Ort],
[Abw_Versender_Matchcode],
[Neutralitaetskennzeichen],
[Abw_Empfaenger_Matchcode],
[Warenwert],
[Frankatur],
[Frankaturbezeichnung],
[Versender_Nachnahme],
[Auftragsnummer_Versender],
[Waehrung_Versendernachnahme],
[Routing_Order_KZ],
[Logistikmodell],
[Zeichnr],
[Wareninhalt],
[Lieferscheinnummer],
[Abrechnungskennzeichen],
[KG_frachtpflichtig],
[KG_effektiv],
[Kubikmeter],
[Lademeter],
[Anzahl_Europaletten],
[Anzahl_Gitterboxen],
[Anzahl_VP_Kat_1],
[Anzahl_VP_Kat_2],
[Anzahl_VP_Kat_3]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

Was alle Felder in der Tabelle sind. macht das Sinn?

Bei allen anderen bis auf 2 schlàgt er gruppierte Indizes vor, was ich ja
noch einsehe.
Insgesamt meint er damit eine Verbesserung von 69 % zu bewirken.

Es stellt sich mir ja auch noch die Frage, was passiert beim Import? Wird
der dann um diese 69 % langsamer?

Optimierungen sind immer noch ein Buch mit mind. 5 Siegeln ;-))

Gruß
Christa



Hallo Christa,

ein index in dem alle Felder enthalten sind macht keinen Sinn. Auch nicht
mit der neuen INCLUDE Klausel seit
SQL Server 2005. Wenn der SQL Server sowieso alle Felder und Zeilen der
Tabelle braucht, ist er mit einem sonst so bösen Table Scan genau auf dem
richtigen Weg.

Und ob es langsamer beim schreiben wird, hàngt von deinen Indizies, dem
Fillfactor und den Daten die du ànderst / einfügst / löschst ab. Es gibt
natürlich keinen liniearen Zusammenhang zwischen Optimierung durch Indizies
beim Select kontra langsames Insert/Update. Richtig ist aber, daß ein Index
eben mitgepflegt werden will und mehr Indizes immer mehr Schreibvorgànge
bedeuten beim Insert/Update/Delete.


Einen Tipp noch: Ausprobieren ist ein sehr probates Mittel bei der SQL
Performance Optimierung :-)

hth
Gregor Stefka

Ähnliche fragen