VB6 で ADO を使用して、約 320,000 レコードを持つ Microsoft Access データベースのテーブルにアクセスしています。
次の SQL (結合がないことに注意してください) は、実行に約 100 分の 3 秒かかります。結果は、そのテーブルの 320,000 の 492 レコードです!
Select *
From AvailabilityBlocks
Where [Begin] > #02-Oct-2013 12:00:00 AM# AND
(AvailabilityBlocks.Type = 2 OR
AvailabilityBlocks.Type = 3 OR
AvailabilityBlocks.Type=4)
AND ResourceID = 59
ORDER By [Begin], [End]
ただし、次の SQL の実行には約 11 秒かかります。結果は、320k レコードのうち 363 です。
Select *
From AvailabilityBlocks
LEFT JOIN Location
ON Availabilityblocks.LocationID=Location.LocationID
Where [Begin] > #02-Oct-2013 12:00:00 AM# AND
(AvailabilityBlocks.Type = 2 OR
AvailabilityBlocks.Type = 3 OR
AvailabilityBlocks.Type=4) AND
(SubType=3 and AvailableForSPs=True) AND
ResourceID = 59
ORDER By [Begin], [End]
これには論理的で簡単な説明が必要です。完全に明らかな何かが欠けていますか?
前もって感謝します!