SQLServer2000中一个查询耗时的问题

madings 2006-08-28 04:43:09
偶数据库中有一张表,约110万条记录,使用以下语句查询符合条件的记录条数:
select count(*) from HisPMm_8 where OBJID in (select TempID from TempTable where TempType='HPOID201018312' ) and HappenedTime >= '2006-08-25 8:41:35'
表TempTable中符合记录的语句有600多条,
当我用'2006-08-25 8:41:35' 及以前的时间作为条件查询时速度很快,约1~2秒,而将时间改为'2006-08-25 8:41:36'或以后的时间作为条件查询时则很慢,大于1分钟。
请哪位大侠帮我分析一下原因,在下感激不尽!
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
madings 2006-08-28
  • 打赏
  • 举报
回复
谢谢大家!
WangZWang 2006-08-28
  • 打赏
  • 举报
回复
--如果下面得出数据正确,可以如下语句要快些,并加上索引
Select count(distinct objID) from HisPMm_8 as a ,TempTable as b
where a.OBJID=b.TempID and b.TempType='HPOID201018312'
and a.HappenedTime >= '2006-08-25 8:41:35'
vfssqs 2006-08-28
  • 打赏
  • 举报
回复
关注中:

楼主你因该多测试几次。因为如果在数据没有新增的情况下。'2006-08-25 8:41:36'的要快当然条件都是要>=
 楼主情况一:在执行'2006-08-25 8:41:36'查询明有人做了新增,修改的动作.这时SQL会自动的产生锁.
  情况二:楼主先执行 2006-08-25 8:41:36 然后再执行 2006-08-25 8:41:35 因为SQLSERVER对SQL有优化功能.
abc_sk 2006-08-28
  • 打赏
  • 举报
回复
不可能差别这样大了。当时系统有问题了。
华芸智森 2006-08-28
  • 打赏
  • 举报
回复
改一下试试.

select count(*) from HisPMm_8 AS A
LEFT JOIN TempTable AS B
ON A.OBJID=B.TempID
WHERE B.TempType='HPOID201018312' and A.HappenedTime >= '2006-08-25 8:41:35'
zjcxc 2006-08-28
  • 打赏
  • 举报
回复
可能是索引或者统计出了问题.

试试重建索引.

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧