执行查询条件时第一次会卡,第二次正常

billhwx 2012-12-02 11:24:40
为什么我执行查询数据时第一次会卡,执行查询的表有10多W条记录,而且会提示超时,第二次时就正常了,很快,就两三秒,但重启后电话后第一次查询也会卡,第二次就正常了.
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
以学习为目的 2012-12-03
  • 打赏
  • 举报
回复
引用 3 楼 billhwx 的回复:
有什么办法不清掉缓存吗,我是菜鸟,刚接触不多,现在是只要重启电脑就会卡到超时,第二次查询就正常了
楼主你理解错意思了,第一次查询完执行 dbcc dropcleanbuffers清除缓存,然后在执行第二次查询的意思是给你解释下为什么出现第一次查询会卡第二次又正常这个情况。然后你要解决为什么第一次会卡的情况,你要进行判断为什么第一次会卡,说明你需要对查询语句、数据库进行优化
AcHerat 2012-12-02
  • 打赏
  • 举报
回复
第一次会建立执行计划,如果第一次执行完清掉缓存,再执行那么还会和第一次一样,不过10W条记录执行就超时,那么有必要将楼主你的查询语句做优化,或者表结构等。
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
那是因为第一次查询是从磁盘取的数据,查询完成后,数据放在了缓存中,第二次查询直接从内存中取的数据,所以第一次比较卡,第二次比较快,重启后依旧 你执行sql前,执行set statistics io on打开IO,看看物理读就知道了 再不是第一次执行查询完成后,执行 dbcc dropcleanbuffers,清楚缓存数据,第二次也是会“很卡”
DBA_磊仔 2012-12-02
  • 打赏
  • 举报
回复
你需要的不是保留缓冲,而是优化这个语句,让他第一次就很快
發糞塗牆 2012-12-02
  • 打赏
  • 举报
回复
你这个例子比较容易让我联想到你的执行计划被清空,重启之后,又要重新编译,编译是非常耗资源的操作。如果第一次非常慢,那你要看看是否查询很复杂,导致cpu过高。 这也是为什么SQLServer甚至其他的数据库产品,都要“吃”那么大内存的原因,绝大部分内存用于缓存计划,使得下一次执行的时候可以尽可能避免编译。
-晴天 2012-12-02
  • 打赏
  • 举报
回复
关键是: 你这个查询语句取了多少条记录?
billhwx 2012-12-02
  • 打赏
  • 举报
回复
我现在是在企业管理器里面查询数据,而且就是有条很简单的查询命令
billhwx 2012-12-02
  • 打赏
  • 举报
回复
有什么办法不清掉缓存吗,我是菜鸟,刚接触不多,现在是只要重启电脑就会卡到超时,第二次查询就正常了

22,209

社区成员

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

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