アプリから呼び出されると30秒以上かかるクエリがありますが、SQL SMSから直接呼び出されると<1秒かかります。
これがクエリです:
SELECT T0.pk
FROM products T0
WHERE (( ( T0.pk IN (SELECT T1.target
FROM catrel T1
WHERE ( T1.source = 87960962008461 )
AND ( T1.type = 87961011815221 ))
AND T0.pk NOT IN (SELECT T2.target
FROM varexc T2
WHERE ( T2.source = 87960962008461 )
AND (
T2.type = 87961020990261 )) )
OR ( T0.pk IN (SELECT T3.target
FROM varinc T3
WHERE ( T3.source = 87960962008461 )
AND ( T3.type = 87961021066258
)) ) ) )
AND ( T0.type IN ( 87961022300198, 87916102426706 ) )
ORDER BY T0.p_code
どこからデバッグを開始すればよいかわかりません。 SQLデータベースで直接実行すると、即座に応答が返されます。
クエリは「最近の高価なクエリ」に表示されます(別のクライアントから実行した場合のみ)
PS:SQL Serverは追加のインデックスを推奨しません。
オプションのPARAMETRIZATIONは「単純」ではなく「強制」でした。単純に戻す+パラメータスニッフィングを無効にすることで問題は解決しました。