我在 VB6 中使用 ADO 来访问 Microsoft 访问数据库中的一个表,该表有大约 320,000 条记录。
下面的 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]
对此必须有一个合乎逻辑的简单解释,我是否遗漏了一些完全明显的东西?
提前致谢!