-1

ARITHABORTHをON/OFFに設定し、DBCC DROPCLEANBUFFERSとDBCC FREEPROCCACHEを使用してバッファをクリアすることを含む、同様の質問に対する回答には既に従っています。また、パラメータをローカル変数に変換しようとしました。しかし、まだパフォーマンスの問題があります。スクリーンショットで見られるようにSPROC .NETから遅いがSSMSから5倍速い

enter image description here

、SSMSから同じ手順を約625ミリ秒かかりますが、.NETクライアントから、約3.5秒かかります。

興味深いのは、データの読み取りも異なることです。 "バイナリ"列には.NETクライアント用のデータがありますが、SSMS用のデータはありませんが、私は専門家ではなく、その理由を知りません。

ご協力いただければ幸いです。

テクノロジー:SQLサーバー2016標準

基礎テーブルは、プロシージャで取り込まれたパラメータは、通常は非常に似てい 約3万行が含まれています。

もう一度、ご協力いただきありがとうございます。

+0

SSMSで使用しているのと同じDBにドットネットクライアントが接続していることを確認してください。 – GuidoG

+1

プロファイラを使用してsqlコマンドを取得します。 SSMSでテストしたコマンドと比較してください。 – GuidoG

+0

@GuidoGはい、もちろん同じDBを使用しています。取得したプロファイルトレースは既に添付されています。私はまた、両方のSPの呼び出しが同じクエリプランを使用することを確認しました –

答えて

0

私はEntity Frameworkを使用しているため、アプリケーションの接続文字列にMultipleActiveResultSets = Trueが設定されています。接続文字列からこれを削除すると、クエリは.NETとSSMSで同じパフォーマンスを持ちます。

関連する問題