ich eine SQL-Abfrage verwenden, die in die folgende Form ähnelt:LEFT OUTER JOIN auf zwei Säulen Leistungsproblem
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
AND table1.period = table2.period
Und es ist entweder viel zu langsam oder Deadlocks etwas ist, weil es mindestens 4 Minuten dauert Rückkehr. Wenn ich es zu diesem ändern würde:
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
WHERE table1.period = table2.period
dann funktioniert es gut (wenn auch nicht die richtige Anzahl von Spalten zurückgeben). Gibt es eine Möglichkeit, dies zu beschleunigen?
UPDATE: Es macht das Gleiche, wenn ich die letzten beiden Zeilen der letzteren Abfrage wechseln:
SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.period = table2.period
WHERE table1.person_uid = table2.person_uid
UPDATE 2: Diese Ansichten sind eigentlich, dass ich beitreten. Leider befinden sie sich in einer Datenbank, über die ich keine Kontrolle habe. Daher kann ich (leicht) keine Änderungen an der Indexierung vornehmen. Ich bin geneigt zuzustimmen, dass dies ein Indizierungsproblem ist. Ich werde eine Weile warten, bevor ich eine Antwort akzeptiere, für den Fall, dass es eine magische Möglichkeit gibt, diese Frage abzustimmen, von der ich nichts weiß. Ansonsten werde ich eine der aktuellen Antworten akzeptieren und versuchen, einen anderen Weg zu finden, um das zu tun, was ich tun möchte. Danke für die Hilfe von allen bis jetzt.
Bitte geben Sie den Ausführungsplan für diese Abfrage – squadette