|zyciis| 一个SQL2005的奇怪问题,我的一条查询存储过程,开始点击查询的时候要4秒,但点多以后就1秒就可以了 这是怎么回事 我有一个分页的存储过程如果长时间没有去点击查询的话再点击就要4秒但是点多以后他都可以用1秒来查询这是怎么回事呢?如果是因为SQL对这条查询语句优化了性能的话能不能让他一直优化这一条呢谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一次或者是长时间不用的时候,SQL Server会自动将这条语句踢出缓存,下次再使用的时候,SQL Server要重新编译后读入缓存,所以消耗的时间要长一点.而连续的点击的话,直接读取缓存里面解析后的,所以时间上会比较短也比较快! 那有没有办法让SQL自动经常性的缓存表里面的解析呢因为现在就是因为开始点的时候太慢了 客户整天有意见 这个机制好像是SQL Server内部完成的,不知道怎么自动写入缓存. 应该是1楼说的,与windows的内存管理的道理相同,第一次打开一耗内存的程序,时间会较长,硬盘不停闪动,关闭程序,再打开,就不用那么长时间. 你是用通用的分页存储过程吧,这种动态的,就算写成存储过程,很多情况下仍然要编译,所以我一般是不用通用分页的存储过程。另:2005的分页用row_number()应该比select top快,毕竟不需要left join。 现在是SQL读入缓存,那能不能让这个缓存的时间廷长呢比如本来1分种,现在我改为60分秒还有这个缓存会在什么时候改变,比如在要查询的表数据改变时,查询是不是又变为4秒谢谢 缓存是SQL动态管理的,当缓存不够,SQL会牺牲一些不常用的执行计划,甚至缓存够的情况下,也会清除一些长时间没用的执行计划,好像不提供可控的接口。 第一次执行的时候需要建立新的连接,是比较耗时的一个过程,第二次以后会直接使用现有的连接速度就回快的多了另外还有缓存队列,SQL在第一次执行的时候会先添入到缓存里执行队列中先进行编译,第二次以后会到先判断是否在队列中如果在就不编译直接运行,否则就先编译在执行 4小时之内不能再次发贴,求SQL语句 问个基础问题,和尚请进 比较复杂的sql语句,如何写 在线等!常用的数据库调优方法有哪些?? SQL 建表语句字符串拼接 如何连接修改过端口号的SQL SERVER 问一个查询问题 请问? sql server连接池问题 请问搞VFP的薪水有多少,DELPHI与VFP有什么区别?谢谢! 如何随机生成如下的数值? .............求一句SQL语句...............
而连续的点击的话,直接读取缓存里面解析后的,所以时间上会比较短也比较快!
不知道怎么自动写入缓存.
现在是SQL读入缓存,那能不能让这个缓存的时间廷长呢
比如本来1分种,现在我改为60分秒
还有这个缓存会在什么时候改变,比如在要查询的表数据改变时,查询是不是又变为4秒
谢谢
另外还有缓存队列,SQL在第一次执行的时候会先添入到缓存里执行队列中先进行编译,第二次以后会到先判断是否在队列中如果在就不编译直接运行,否则就先编译在执行