SQL-Abfrage Timeout problem

P8310

Benutzer
Beiträge
12
Hallo zusammen,

ich möchte mich kurz vorstellen, mein Name ist Tino und Prog. hin und wieder mal kleiner Sachen.

Nun habe ich natürlich gleich ein Anliegen mitgebracht...
Code:
SELECT Parts.* FROM Label INNER JOIN Date ON Label.H_SER = Date.D_SER INNER JOIN Parts ON Label.H_SER = Parts.P_SER" & _
                             " 
WHERE Date.D_S BETWEEN CONVERT(datetime, '" & von & "', 104) AND CONVERT(datetime, '" & bis & "', 104) AND Label.H_TEST = '" & line & "' AND Parts." & spalte & " = '" & such & "'

ich habe hier das Problem das ich meist immer in ein Timeout laufe, darauf hin habe ich diesen auf 120 angehoben, und es kommen auch Daten. Aber irgendwie hab ich das Gefühl das es nicht korrekt ist oder es besser geschrieben werden kann b.z es schneller geht.

lieben dank im Voraus
Tino
 
Werbung:
Die Abfrage ist zunächst mal nicht ungewöhnlich, da kann man nicht viel optimieren. Jetzt kennen wir ja nicht die Datenmengen die dahinter stehen aber Indexe werden vermutlich dein Problem lösen.

Wenn du das MSSQL Management Studio benutzt gibt es einen Button "tatsächlichen Ausführungsplan einschließen", das ist wie EXPLAIN und liefert dir eine grafische Darstellung.
 
Das Bild ist unvollständig aber es zeigt 98% Kosten für das ausgewählte Element. Hier ist die Abfrage auf jeden Fall am längsten zu Gange.
 
okay da ist es die Between. da kann auch nicht viel anderes gemacht werden. Danke, hab jetzt schon viel mitgenommen aus diesen einem Thema
 
Du könntest einen Index auf die Spalten von und bis legen. So ein Index beißt auch nicht, der läßt sich schnell wieder löschen.
 
Ich bin absolut kein MS SQL Experte... Aber das könnte ja erstmal helfen oder?
(Bevor man jetzt anfängt wild neue Indizes anzulegen...)
Code:
Select t.name,
  i.*
From  sys.indexes i

Inner  Join sys.tables t
On  t.object_id = i.object_id

Where  t.name  In ('Label', 'Date', 'Parts')
(Kann sein das die Tabellennamen groß geschrieben werden müssen... Weiß nicht wie das da hinterlegt ist...)
 
Werbung:
Zurück
Oben