每次执行SQL查询时,我都会得到相同的执行时间。 如果SQL查询多次运行,是否有机会一直获得相同的执行时间?
答案 0 :(得分:3)
当您第一次运行查询并且数据不在高速缓存中时,服务器将从磁盘读取数据。这很费时间。第二次执行相同的查询数据已在缓存中,因此所需的时间更少。
如果使用SQL,有没有机会一直获得相同的执行时间 查询运行多次?
如果您要使用冷缓存(每次均不缓存数据)测试查询,则可以在执行查询之前使用DBCC DROPCLEANBUFFERS:
使用DBCC DROPCLEANBUFFERS使用冷缓冲区高速缓存测试查询 无需关闭并重新启动服务器。丢弃干净的缓冲区 来自缓冲池和来自列存储的列存储对象 对象池,首先使用CHECKPOINT生成冷缓冲区高速缓存。这个 强制将当前数据库的所有脏页写入磁盘 并清理缓冲区。完成此操作后,您可以发出DBCC DROPCLEANBUFFERS命令从缓冲池中删除所有缓冲区。
这当然不能在生产环境中使用。
如果 相反,您希望始终将数据保留在缓存中,则应增加服务器的RAM,并且不要尽可能长地重新启动它。