有没有办法在 SQL Server 中进行 SELECT 查询而不进行任何优化?

Dam*_*ing 3 database-design sql-server

我正在尝试测试 SQL 服务器查询的速度。但是,一旦我执行一次查询,它就会变得更快。数据库是实时的,所以我不能对其进行任何更改,只能对正在执行的 SELECT 查询进行更改。

有没有办法在没有 SQL 服务器优化的情况下进行 SELECT 查询?

Aar*_*and 12

对于查询计划本身,您可以在每次查询时使用以下选项强制编译:

OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud)

但是我怀疑正在发生的事情是查询的第二次和后续执行是从内存而不是磁盘中提取数据,当然内存比磁盘快。

如果您尝试测试此数据始终来自磁盘的场景,那么在您的生产实例上执行此操作而不影响其他任何东西的方法确实不是一个好方法,因为您一次只能删除整个实例的干净缓冲区,而不是对于单个数据库,没关系表。因此,您可以做的可能是在相同的硬件上设置一个实例,仅使用此表,并在每次运行查询之前运行以下命令:

CHECKPOINT;
DBCC DROPCLEANBUFFERS;
Run Code Online (Sandbox Code Playgroud)

但是,这没有多大意义,因为理想情况下您将查询内存中的数据,并且您应该针对最佳情况进行优化。你应该知道最坏的情况是什么样的,但同样,这不应该是正常情况,除非你有一个非常大的数据库和非常小的内存(在这种情况下,打开钱包并购买更多内存 - 它比因缺少内存而优化要便宜得多)。