为什么我的Sql查询第二次运行更快?

时间:2018-10-29 06:45:23

标签: sql-server performance execution

每次执行SQL查询时,我都会得到相同的执行时间。 如果SQL查询多次运行,是否有机会一直获得相同的执行时间?

1 个答案:

答案 0 :(得分:3)

当您第一次运行查询并且数据不在高速缓存中时,服务器将从磁盘读取数据。这很费时间。第二次执行相同的查询数据已在缓存中,因此所需的时间更少。

  

如果使用SQL,有没有机会一直获得相同的执行时间   查询运行多次?

如果您要使用冷缓存(每次均不缓存数据)测试查询,则可以在执行查询之前使用DBCC DROPCLEANBUFFERS

  

使用DBCC DROPCLEANBUFFERS使用冷缓冲区高速缓存测试查询   无需关闭并重新启动服务器。丢弃干净的缓冲区   来自缓冲池和来自列存储的列存储对象   对象池,首先使用CHECKPOINT生成冷缓冲区高速缓存。这个   强制将当前数据库的所有脏页写入磁盘   并清理缓冲区。完成此操作后,您可以发出DBCC   DROPCLEANBUFFERS命令从缓冲池中删除所有缓冲区。

这当然不能在生产环境中使用。

如果 相反,您希望始终将数据保留在缓存中,则应增加服务器的RAM,并且不要尽可能长地重新启动它。