SQL Server ストアドのクエリタイムがSQL Server Management Studio (SSMS) とプログラムからの実行に差異が発生
- 作成日 2021.12.20
- Sql Server SQL Server Management Studio
- SQL Server
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」を外して、再度、プログラムから実行してもキャッシュが更新され、クエリタイムは改善しました。
-
前の記事
Ruby ファイルの読み込む「each」と「foreach」のパフォーマンスを計測する 2021.12.20
-
次の記事
MySQL 角度からラジアン値を求める 2021.12.20
コメントを書く