我在 SQL Server 2000 中有一个包含 24M 条记录的数据库。
当我运行这个查询
select * from cdr
where starttime between '2011-05-15 00:00:00.000' and '2011-05-16 00:00:00.000'
甚至这个
declare @MinDate char(30) ,@MaxDate char(30)
set @MinDate=substring(convert(char,(getdate()-1), 120),1,10)+' 00:00:00.000'
set @MaxDate=substring(convert(char,(getdate()), 120),1,10)+' 00:00:00.000'
select * from cdr
where starttime between '2011-05-15 00:00:00.000' and @MaxDate
它运行速度非常快,并在 10 秒内返回 3500 条记录,请注意starttime
在char(30)
数据库中
但是当我运行这个查询时,它只会在 10~60 秒内返回 32 条记录
declare @MinDate char(30), @MaxDate char(30)
set @MinDate = substring(convert(varchar, (getdate()-1), 120),1,10)+' 00:00:00.000'
set @MaxDate = substring(convert(varchar, (getdate()), 120),1,10)+' 00:00:00.000'
select * from cdr
where starttime between @MinDate and @MaxDate
:: @MinDate 值为 2011-05-15 00:00:00.000
请注意,starttime
在我的数据库中编制了索引
我想知道我的问题是什么?