Meine Datenbank enthält zwei Tabellen mit den Namen DomesticSalesOrders
und InternationalSalesOrders
. Beide Tabellen enthalten mehr als 100 Millionen Zeilen. Jede Tabelle hat eine Primärschlüsselspalte mit dem Namen SalesOrderId
. Die Daten in den beiden Tabellen unterscheiden sich voneinander.SQL Union Alle Fragen
Geschäftsbenutzer möchten einen Bericht, der zusammengefasste Informationen über die Gesamtzahl der globalen Verkäufe und Gesamtumsatzbeträge enthält. Ich muss sicherstellen, dass meine Abfrage in der minimal möglichen Zeit ausgeführt wird. Welche Abfrage soll ich verwenden?
Option 1:
SELECT
COUNT(*) AS NumberOfSales,
SUM(SalesAmount) AS TotalSalesAmount
FROM
(
SELECT
SalesOrderId,
SalesAmount
FROM
DomesticSalesOrders
UNION ALL
SELECT
SalesOrderId,
SalesAmount
FROM
InternationalSalesOrders
) AS p
Option 2:
SELECT
COUNT(*) AS NumberOfSales,
SUM(SalesAmount) AS TotalSalesAmount
FROM
DomesticSalesOrders
UNION ALL
SELECT
COUNT(*) AS NumberOfSales,
SUM(SalesAmount) AS TotalSalesAmount
FROM
InternationalSalesOrders
Ich denke, beide korrekt sind, aber ich kann nicht verstehen, was anders ist? Dank
Haben Sie es versucht? Welche Ergebnisse haben Sie beobachtet? – nicomp
Das klingt nach einer Hausaufgabe. – Dai