Jump to content

ov3r

Members
  • Gesamte Inhalte

    4
  • Registriert seit

  • Letzter Besuch

Profile Fields

  • Member Title
    Newbie

Fortschritt von ov3r

Rookie

Rookie (2/14)

  • Erste Antwort
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei
  • 1 Jahre dabei

Neueste Abzeichen

10

Reputation in der Community

  1. Moin Moin, Danke danke für die Tipps mit den Indizes. Aber genau das habe ich auch am Anfang gedacht. Ich habe diesen Datenbank Mitschnitt in den Optimierungsassistenten geladen und dieser hat mir nur noch zusätzliche Kataloge vorgeschlagen. Nachdem ich dann seinem Rat befolgt habe, waren es anstatt 1:32 nur noch 1:27. Aber im Sybase dauert die gleiche Query, bei gleichen Datensätzen 6 - 8 Sekunden. Ach es handelt sich um mehr als 50 000 Datensätze in einer Tabelle. Durch die Joins wird die Query so etwas von den 300 000 bis 500 000 Datensätzen haben. Und wenn der MSSQL Server auf die Anzahl der Datensätze die Funktionen ausführt, ist es klar wieso es so lange dauert. :) Es ist leider nicht ganz so einfach das Problem zu beschreiben... Danke für die Antworten nochmals PS: Die Indizes sind alle Clustered... Gruß Jorg
  2. Moin Moin Nils, Danke für deine Antwort. ich werde es mal mit dem Query Plan versuchen. Aber ich habe das Problem ja schon, mir fehlt ja nur die Lösung :). Es ist Eindeutig, das der MSSQL Server die Funktionen zu dem Ganzen Ergebnis der Joins ausführt. Und anschließend erst nach der WHERE Klausel filtert. Im Sybase ist es so, dass er erst die Joins ohne Funktionen ausführt, dann nach der WHERE Klausel filtert und dann auf das Ergebnis die Funktionen anwendet. Gibt es für das beschriebene Verhalten eine Erklärung oder ist es nun mal so gegeben? Gruß Jorg
  3. Vielen Dank für die schnelle Antwort. Hmm also ich habe die Indizes genau so aus der Sybase Datenbank eingesetzt. Die Joins sind alle über PK erstellt. Die Funktionen holen aus verschiedenen Tabellen Werte, die anschließend zurück gegeben werden. Aus einer ID wird mit ein paar Parametern ein Text. Nachdem ich mal den Datenbanktraffic auf dem MSSQL Server mitgeschnitten habe, hat man an der Datei gesehen, dass der MSSQL alle Funktionen zu jedem Ergebnis ausgeführt hat und nicht erst nach der Where Klausel. Daher auch meine Frage ob man am SQL Server etwas einstellen kann. Damit er die Funktionen erst nach der Ergebnismenge ausführt.? Vielen Dank Gruß Jorg
  4. Hallo Zusammen, ich musste meine Software von einem Sybase Server auf einen MSSQL Server umstellen. Und jetzt habe ich erschreckend festgestellt, dass der MSSQL Server für die u.g. Abfrage 1,5 Minuten braucht und der Sybase Server hat seine 6 Sekunden dafür benötigt. Der Aufbau des SQL's ist wie folgt: SELECT funktion1(tabelle1.spalte1), funktion1(tabelle2.spalte2), funktion2(tabelle1.spalte3), funktion2(tabelle2.spalte4), funktion3(tabelle3.spalte5), funktion3(tabelle3.spalte6) FROM tabelle11 LEFT JOIN tabelle2 ON tabelle1.spalte1 = tabelle2.spalte1 LEFT JOIN tabelle3 ON tabelle2.spalte1 = tabelle3.spalte1 LEFT JOIN tabelle4 ON tabelle3.spalte1 = tabelle4.spalte1 LEFT JOIN tabelle5 ON tabelle4.spalte1 = tabelle5.spalte1 LEFT JOIN tabelle6 ON tabelle5.spalte1 = tabelle6.spalte1 WHERE tabelle6.spalte1 = 'wert' Meine Vermutung ist das der MSSQL Server zuerst alle Datensätze sammelt, anschließend die Funktionen über alle Datensätze jagt und dann erst nach der WHERE Bedingung filtert. Gibt es dort einen Trick oder ein besseres Vorgehen? Vielen Dank im Voraus Mit freundlichen Grüßen Jorg
×
×
  • Neu erstellen...