Wenn ich die folgende Abfrage ausführte dauerte es fast 4 min.Wie schreibe ich eine SQL-Abfrage in einer besseren Weise für die Optimierung?
Dies ist die Abfrage
SELECT
transactionsEntry.StoreID StoreID,
items.ItemLookupCode ItemLookupCode,
SUM(transactionsEntry.Quantity)
FROM
[HQMatajer].[dbo].[TransactionEntry] transactionsEntry
RIGHT JOIN
[HQMatajer].[dbo].[Transaction] transactions ON transactionsEntry.TransactionNumber = transactions.TransactionNumber
INNER JOIN
[HQMatajer].[dbo].[Item] items ON transactionsEntry.ItemID = items.ID
WHERE
YEAR(transactions.Time) = 2015
AND MONTH(transactions.Time) = 1
GROUP BY
transactionsEntry.StoreID, items.ItemLookupCode
ORDER BY
items.ItemLookupCode
TransactionEntry
Tabelle 90 Milliarden Datensätze haben, Transaction
Tabelle 30 Milliarden Datensätze hat, item
Tabelle hat 40 k Datensätze.
Schätzungskosten . Es zeigt 84%. und es ist Clustered-Index.
Allgemeiner Tipp, verwenden Sie niemals RECHTE JOIN, da es für die meisten Menschen zu verwirrend ist. Wechseln Sie stattdessen zu LEFT JOIN, da es viel einfacher zu verstehen ist, dass "main table left join optionaler Daten" anstatt "optional data right join main table". – jarlh
versuchen Sie, die Datensätze aus Transaktionstabelle zunächst zu filtern und dann mit den entsprechenden Tabellen zu verbinden. –
@ ps_prakash02 Sie haben Recht. Jetzt reduzieren Sie eine Minute. Aber immer noch dauert 2 min 30 sec –