我在VB6中使用ADO訪問具有大約320,000條記錄的Microsoft Access數據庫中的表。帶連接的SQL的速度與無速度的差異?
下面的SQL(注意不加入)需要大約百分之三秒的時間來執行。結果是該表中的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]
必須有一個合乎邏輯的簡單的說明這一點,我失去的東西完全明顯?
在此先感謝!
可能是第一個查詢中的(SubType = 3和AvailableForSPs = True)約束?無論如何,這兩個查詢在功能上看起來並不相同...... –
「SubType = 3和AvailableForSPs = True」條件是連接表的一部分! (位置) – user1801904
既有'Availabilityblocks.LocationID'和'Location.LocationID'索引字段? – Linger