SQL Server ストアドのクエリタイムがSQL Server Management Studio (SSMS) とプログラムからの実行に差異が発生

SQL Server ストアドのクエリタイムがSQL Server Management Studio (SSMS) とプログラムからの実行に差異が発生

SQL Server ストアドのクエリタイムに SQL Server Management Studio (SSMS) とプログラムからの実行に差異が発生

環境

  • OS windows10 pro
  • SQL Server2017 Standard Edition
  • SSMS 18.7.1

問題点

SQL Server Management Studio (SSMS) とプログラムから同じクエリを実行したところ、大幅なクエリタイムの差異が発生

SQL Server Management Studio (SSMS)から実行した方が遥かに速い

原因

SSMSの場合「Set ARITHABORT」がデフォルトでON になっており、
プログラムから実行した場合は、デフォルトが「OFF」ため

一度、SSMS側で「Set ARITHABORT」を「OFF」にしてストアドを実行すると、クエリタイムはプログラムから実行した場合とほぼ同じになった。

Set ARITHABORT OFF
go

対処法

なので、対象のストアドを「Set ARITHABORT」をONにして、プログラム側から実行

SET ARITHABORT ON
GO

これで、クエリタイムは改善。

どうも、実行プランのキャッシュの問題なようなので、一度「ON」にして実行した後に、「SET ARITHABORT ON」を外して、再度、プログラムから実行してもキャッシュが更新され、クエリタイムは改善しました。