首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql性能问题

sql性能问题
EN

Stack Overflow用户
提问于 2011-05-16 16:58:34
回答 2查看 167关注 0票数 3

我在SQL Server2000中有一个包含24M条记录的数据库。

当我运行此查询时

代码语言:javascript
复制
select * from cdr
where starttime between '2011-05-15 00:00:00.000' and '2011-05-16 00:00:00.000'

即使是这样

代码语言:javascript
复制
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条记录,注意数据库中的starttimechar(30)

但是当我运行这个查询时,它只在10~60秒内返回了32条记录

代码语言:javascript
复制
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进行了索引

我想知道我的问题是什么?

EN

回答 2

Stack Overflow用户

发布于 2011-05-16 17:45:53

Sql server可能具有为查询缓存的查询计划,该查询计划包含2个参数,对于您的参数值而言,该参数不是最佳参数。在sqlserver2008中,可以使用Optimize for unknown提示。http://blogs.msdn.com/b/sqlprogrammability/archive/2008/11/26/optimize-for-unknown-a-little-known-sql-server-2008-feature.aspx在SQL server2000中,您可以尝试本文中提到的其他选项之一。

票数 0
EN

Stack Overflow用户

发布于 2011-05-16 22:59:43

herehere的问题相同。使用OPTION (RECOMPILE)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6015053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档