以下のクエリを実行すると、ほぼ4分かかりました。最適化のためのより良い方法でSQLクエリを書くには?
これはクエリである
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
テーブルはitem
テーブル40件のKレコードを有し、Transaction
テーブルは300億件のレコードを有し、900億件のレコードを有していてもよいです。
見積りコスト 。それは84%を示します。それはクラスタ化インデックスです。
一般的なヒントは、ほとんどの人にとってはあまりにも混乱しているので、右ジョインを使用しないでください。代わりにLEFT JOINに切り替えると、 'オプションのデータはメインテーブルに追加されます。 – jarlh
最初に取引テーブルからレコードをフィルタリングしてから、それぞれのテーブルに参加してみてください。 –
@ ps_prakash02あなたは正しいです。今それは1分を減らす。しかし、まだ時間がかかります2分30秒 –