我有一个约3000万条记录的表History, 有一个字段ExitTime,取指定UnitID的最近10天的记录,如果写这样的语句:
SELECT * FROM History WHERE UnitID=18748 AND ExitTime>GETDATE() - 10
将执行约5秒钟(UnitID和ExitTime都分别键了索引,实际结果只有10条)。但如果改成如下的等效语句,将只要约200毫秒即可执行完成,效率提高约25倍!
DECLARE @theTime datetime SET @theTime=GETDATE() - 10
SELECT * FROM History WHERE UnitID=18748 AND ExitTime>@theTime