ich eine Abfrage, die wie folgt aussieht:SQL Performance - Filtering auf Abfrage vor oder nach den Gewerkschaften
SELECT PersonId,
Note,
Amount
FROM Table1 A
WHERE A.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
WHERE B.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
WHERE C.PersonId = @PersonId
nun diese Abfrage Tausende von Ergebnissen wird schließlich zurückkehren und so mag ich möglich, die beste Performance-Abfrage erstellen . Ich möchte wissen, ob das effizienter ist als Filterung auf PersonId nach den Gewerkschaften wie folgt aus:
SELECT * FROM
(
SELECT PersonId,
Note,
Amount
FROM Table1 A
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
) A
WHERE A.PersonId = @PersonId
Wäre es mit Joins das Gleiche? Beitritt zu jeder Abfrage im Gegensatz zu am Ende? – Walker
Probieren Sie es selbst in Ihrem SQL-Entwickler. Vergleichen Sie beide und Sie werden Ihr Ergebnis haben. Soweit ich denke, Joins könnte schneller sein. Ich denke, der Abfrageoptimierer wird Ihre Union-Abfrage zu einer Join-Abfrage rekonstruieren. So wäre es schneller mit Joins. Aber warum ist deine PersonID kein Primärschlüssel? – thirstyAndreas