C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: パラメータークエリについて


(過去ログ 170 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■98158 / inTopicNo.1)  パラメータークエリについて
  
□投稿者/ ルーキー (1回)-(2021/09/30(Thu) 17:51:52)

分類:[データベース全般] 

SQL Server にアクセスするクエリにて速度が遅くなる理由が不明で困っております。
利用状況モニターでクエリを確認すると、下記の様なイメージのクエリになっております。
(列名などは仮です)

SELECT SUM(A) AS ASUM FROM Aデータ
WHERE ADATE BETWEEN @P1 AND @P2 AND ACODE = @P3 AND BCODE = @P4 AND CCODE IN(@P5,@P6,@P7,@P8,@P9,@P10)

何度か通る処理の途中で上記のクエリが走るのですが、パラメーターを利用せずに、毎回固定値をクエリ内に指定してOpenする方が
トータルの処理がかなり早いです。
毎回変更される固定値を指定すると、アドホッククエリになるかと思いますが、何故か上記クエリで行うよりもトータルで高速です。

また、利用状況モニター上の上記クエリのプラン数が50などになっており、キャッシュから処理されていないような気もします。

全体の作りを変えるべきという話はおいといていただいて、何かアドバイスあれば教えてください。

引用返信 編集キー/
■98159 / inTopicNo.2)  Re[1]: パラメータークエリについて
□投稿者/ ポテロングしお味 (2回)-(2021/09/30(Thu) 18:55:43)
No98158 (ルーキー さん) に返信

処理時間が全然違うならインデックスの使われ方が違うのでしょうね
実行計画は眺めてみました?

https://ja.stackoverflow.com/questions/68789/パラメータ化クエリを使うと実行計画が複雑化し-遅くなってしまう

クエリにヒントをつけるといいらしいです
引用返信 編集キー/
■98160 / inTopicNo.3)  Re[2]: パラメータークエリについて
□投稿者/ ルーキー (2回)-(2021/10/01(Fri) 11:06:08)
No98159 (ポテロングしお味 さん) に返信

> 処理時間が全然違うならインデックスの使われ方が違うのでしょうね
> 実行計画は眺めてみました?
>
> https://ja.stackoverflow.com/questions/68789/パラメータ化クエリを使うと実行計画が複雑化し-遅くなってしまう
>
> クエリにヒントをつけるといいらしいです

ご返答ありがとうございます。
クエリヒントという存在は知らず、勉強になりました。

今回の件は、アドバイスいただいた実行計画確認にて、不足しているインデックスと指摘がでたものを追加すると
処理速度が改善されました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -