AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

Ein Thema von DerAndereMicha · begonnen am 26. Nov 2008 · letzter Beitrag vom 26. Nov 2008
Antwort Antwort
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#1

SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 08:51
Datenbank: MS SQL Server • Version: 2000/2005 • Zugriff über: ADO
Hallo,

ich habe ein Programm, welches schon seit einigen Jahren stabil läuft - bisher immer mit einem SQL-Server 2000. Nun wurde auf SQL 2005 umgestellt und auf einmal verhält sich eine SQL-Abfrage in diesem Programm völlig anders als früher. Sie ist jetzt mindestens 10x so langsam !!! Ich habe mir mal den Ausführungsplan dieses Abfrage angeschaut und feststellen müssen, daß der Server sie anscheinend völlig anders optimiert. Noch mehr staunte ich aber, als ich die Abfrage ein wenig umformulierte, in dem ich eine Unterabfrage in der WHERE-Klausel durch eine Variable ersetzte und auf einmal alles wieder wie vorher lief. Kann mir einer von Euch das unterschiedliche Verhalten des SQL-Servers bei folgenden Abfragen (eigentlich 2x die selbe - oder?) erklären.

Bitte aber keine Diskussion über den Sinn bzw. Unsinn dieser Abfrage ...

1. Langsame Abfrage:

SQL-Code:
SELECT A.*,B.*
  FROM INHALTE A FULL OUTER JOIN ZUSATZ B ON A.ADRESSEN_ID=B.ADRESSEN_ID
  WHERE B.ADRESSEN_ID = 4403 OR
        A.ZUSATZID = (SELECT MAX(ZUSATZID) FROM INHALTE WHERE ADRESSEN_ID=4403)
2. Schnelle Abfrage:
SQL-Code:
DECLARE @ZID int
SET @ZID = (SELECT MAX(ZUSATZID) FROM INHALTE WHERE ADRESSEN_ID=4403)

SELECT A.*,B.*
  FROM INHALTE A FULL OUTER JOIN ZUSATZ B ON A.ADRESSEN_ID=B.ADRESSEN_ID
  WHERE B.ADRESSEN_ID = 4403 OR
        A.ZUSATZID = @ZID
Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 08:56
Es scheint als ob er das Maximum mehrmals ermittelt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 09:07
Sollte des Rätsels Lösung wirklich so einfach sein? Auf jedenfall klingt das logisch für mich - vielen Dank.

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 09:12
Zitat von DerAndereMicha:
Sollte des Rätsels Lösung wirklich so einfach sein? Auf jedenfall klingt das logisch für mich - vielen Dank.

Gruß
Micha
Ja, dass (SELECT MAX(ZUSATZID) FROM INHALTE WHERE ADRESSEN_ID=4403) wird für jede Zeile der "darüberliegenden" Abfrage ausgeführt und wenn das viele Zeilen sind, dann dauert das...
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 09:19
Wäre dann nur noch schön zu wissen, warum es der SQL Server 2000 nicht so macht. Beim dem ist das Verhalten ja bei beiden Versionen der Abfrage identisch ...
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 09:19
Der scheint die Abfrage besser zu optimieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: SQL 2000 vs. SQL 2005 - Änderungen in Ausführungsplänen

  Alt 26. Nov 2008, 09:48
Alles klar. Danke nochmal.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz