Also zum Anfang werde ich sagen, dass ich für eine Firma arbeite, die gerne (und mit gutem Grund) Mikro optimieren möchte. Was ich herausfinden muss, ist, ob es eine Leistungssteigerung/-verringerung bei der Verwendung von 2 Joins gibt, oder 1 Join mit einem OR
darauf.SQL-Verknüpfungen ... Mehrere oder ODER?
Dies ist kein perfektes Beispiel, aber es sollte den Punkt herüber bekommen. So zum Beispiel Sie diese 3-Tabellen haben:
dbo.CUSTOMER1
- CustomerId
- CustomerName
dbo.CUSTOMER2
- CustomerId
- CustomerFauxId
- CustomerName
dbo.CUSTOMERINFO
- CustomerId
- CustomerData
Nun müssen Sie die Tabellen verknüpfen und sehen, ob sie Daten entweder in der Tabelle haben. Welche Methode wird von einem Leistungsstandpunkt aus besser sein, oder gibt es sogar einen Unterschied in den beiden?
Dieses erste Beispiel ist, wie die Abfrage derzeit geschrieben wird ... Scheint mir verschwenderisch.
SELECT c1.CustomerId
FROM dbo.CUSTOMER1 c1
JOIN dbo.CUSTOMER2 c2
ON c1.CustomerId = c2.CustomerId
JOIN dbo.CUSTOMERINFO ci
ON ci.CustomerId = c1.CustomerId;
JOIN dbo.CUSTOMERINFO ci1
ON ci2.CustomerId = c2.CustomerFauxId;
Suche nach etwas in diese Richtung zu aktualisieren ...
SELECT c1.CustomerId
FROM dbo.CUSTOMER1 c1
JOIN dbo.CUSTOMER2 c2
ON c1.CustomerId = c2.CustomerId
JOIN dbo.CUSTOMERINFO ci
ON ci.CustomerId = c1.CustomerId
OR ci.CustomerId = c2.CustomerFauxId;
Sie sind nicht "beitreten" die Tabellen überhaupt. Siehst du das? Die 'Join'-Bedingung fehlt. –
I.e. Ein Cross-Join wird durchgeführt. – jarlh
@vkp Sie haben Recht. Ich habe mich mit etwas anderem beschäftigt, als ich das geschrieben habe. Dumm dumm. Überprüfen Sie noch einmal, bitte. – Volearix