Re: Sql-Server-Performance
- From: "Peter Piry" <peter.piry@xxxxxxxxx>
- Date: Thu, 12 May 2005 22:42:01 +0200
Hi,
> Was macht Dein OE da immer mit dem restlichen Text?
> Schau bitte mal bei http://www.oe-faq.de/ vorbei bezüglich
> besserer Einstellungen für den Newsreader.
> Das Umformatieren ist auf Dauer doch etwas zeitaufwändig.
danke für den Tipp, hab meinen Newsreader umgestellt, ich hoffe es funktioniert jetzt besser.
> Überprüfe bitte noch mal mit DBCC SHOWCONTIG die Fragmentierung
> der Tabellen (speziell auch SCHREIBEN, SCHREIBENBETROFFENE) und
> die Verteilung der Statistiken DBCC SHOW_STATISTICS.
> Ist der eine Server da deutlich anders als die anderen?
Gute Idee mit der Fragmentierung - danke für den Tipp - werde schauen, was an diesem einen Server anders ist.
> Bitte übe Dich mal im Lesen der Ausführungspläne, damit Du das
> nachvollziehen kannst. Mir scheint, da machst Du einen grossen
> Bogen rum.
ja, mit dem Lesen von Ausführungsplänen kenn ich mich noch nicht so gut aus. Hast du da vielleicht einen Tipp oder Link, wo man mehr
drüber erfahren kann?
lg
Peter
"Elmar Boye" <ElmarB@xxxxxxx> schrieb im Newsbeitrag news:3eggsrF30ahaU3@xxxxxxxxxxxxxxxxx
> Hallo Peter,
>
> Was macht Dein OE da immer mit dem restlichen Text?
> Schau bitte mal bei http://www.oe-faq.de/ vorbei bezüglich
> besserer Einstellungen für den Newsreader.
> Das Umformatieren ist auf Dauer doch etwas zeitaufwändig.
>
> Peter Piry <peter.piry@xxxxxxxxx> schrieb ...
> > sorry, die späte Antwort, konnte das gestern nicht ausprobieren.
> > Hat leider auch kein Ergebnis gebracht.
> >
>
> Überprüfe bitte noch mal mit DBCC SHOWCONTIG die Fragmentierung
> der Tabellen (speziell auch SCHREIBEN, SCHREIBENBETROFFENE) und
> die Verteilung der Statistiken DBCC SHOW_STATISTICS.
> Ist der eine Server da deutlich anders als die anderen?
>
> > wir haben das Problem jetzt gelöst, indem wir die Query
> > folgendermassen umgebaut haben:
>
>
> > SELECT ISNULL(count(*),0)
> > FROM ANTRAEGE, ARBEITSVERHAELTNISSE
> > WHERE ANTRAEGE.ANTRAGSSTATUS_ID=1
> > AND ANTRAEGE.ARBEITSVERHAELTNIS_ID = ARBEITSVERHAELTNISSE.ARBEITSVERHAELTNIS_ID
> > AND ANTRAEGE.GEST_ID_ARBEITSVERHAELTNIS = ARBEITSVERHAELTNISSE.GESCHAEFTSSTELLEN_ID
> > AND(ISNULL(ANTRAEGE.anzahl_bescheide, 0) > 0
> > OR CONVERT(VARCHAR, antraege.antrag_id)
> > + '_'
> > + CONVERT(VARCHAR,antraege.geschaeftsstellen_id)
> > IN (SELECT CONVERT(VARCHAR, schreiben.antrag_id)
> > + '_'
> > + CONVERT(VARCHAR,schreiben.gest_id_antrag)
> > FROM SCHREIBEN, SCHREIBENBETROFFENE
> > WHERE SCHREIBENBETROFFENE.ANTRAG_ID=ANTRAEGE.ANTRAG_ID
> > AND SCHREIBENBETROFFENE.GEST_ID_ANTRAG = ANTRAEGE.GESCHAEFTSSTELLEN_ID
> > AND SCHREIBENBETROFFENE.SCHREIBEN_ID = SCHREIBEN.SCHREIBEN_ID
> > AND SCHREIBENBETROFFENE.GEST_ID_SCHREIBEN = SCHREIBEN.GESCHAEFTSSTELLEN_ID
> > AND SCHREIBEN.SCHREIBENTYP_ID IN (4, 31, 43) ))
> > AND ARBEITSVERHAELTNISSE.INSOLVENZ_ID = 2107
> > AND ARBEITSVERHAELTNISSE.GEST_ID_INSOLVENZ = 1
> >GO
> >
> > Also statt der OR-Bedingung verwenden wir eine IN-Bedingung.
> > Diese funktioniert jetzt innerhalb von 1-2 Sekunden.
> > Ist mir trotzdem unverständlich, das die Abfrage mit OR nur auf einem
> > Server von 9 so lang braucht.
>
> Das dürfte weniger am OR liegen sondern eher daran, dass der Optimierer
> durch die zusammengesetzten und nach VARCHAR konvertierten Werte
> "erfolgreich" davon abgehalten wird, Indizes bzw. auf einen Hash
> verzichtet zu nutzen. Das kann sich aber schnell als klassischer
> Pyrussieg rausstellen, wenn die Parameter sich ändern.
>
> Bitte übe Dich mal im Lesen der Ausführungspläne, damit Du das
> nachvollziehen kannst. Mir scheint, da machst Du einen grossen
> Bogen rum.
>
> Im übrigen solltest Du etwas sauberer Casten, also in etwa
> für ein Integer:
> CAST(antraege.antrag_id AS VARCHAR(10))
> + '_'
> + CAST(schreiben.gest_id_antrag AS VARCHAR(10))
> oder (für CONVERT Liebhaber):
> CONVERT(VARCHAR(10), antraege.antrag_id)
> + '_'
> + CAST(VARCHAR(10), schreiben.gest_id_antrag)
>
> Alternativ ginge auch CHAR(10) ohne "_".
> Aber genug davon, denn besser ist wie oben geschrieben, dass solche
> (Blech oder Platin) Krücken erst gar nicht eingesetzt werden müssen.
>
> Gruss
> Elmar
>
.
- Follow-Ups:
- Re: Sql-Server-Performance
- From: Elmar Boye
- Re: Sql-Server-Performance
- References:
- Sql-Server-Performance
- From: Peter Piry
- Re: Sql-Server-Performance
- From: Elmar Boye
- Re: Sql-Server-Performance
- From: Peter Piry
- Re: Sql-Server-Performance
- From: Elmar Boye
- Re: Sql-Server-Performance
- From: Peter Piry
- Re: Sql-Server-Performance
- From: Elmar Boye
- Re: Sql-Server-Performance
- From: Peter Piry
- Re: Sql-Server-Performance
- From: Elmar Boye
- Sql-Server-Performance
- Prev by Date: Re: Sicht von Daten absteigend bis zu einer Markierung.
- Next by Date: Re: Sicht von Daten absteigend bis zu einer Markierung.
- Previous by thread: Re: Sql-Server-Performance
- Next by thread: Re: Sql-Server-Performance
- Index(es):
Relevant Pages
|