5

私は、T-SQL でいくつかの基本的なデータベース作業を行った C# 開発者です。ただし、T-SQL の知識をはるかに超えて、非常に複雑なストアド プロシージャを作成する必要があります。

SQL Server 2008 の一部として .net CLR を使用して C# でストアド プロシージャを作成すると、T-SQL で作成した場合よりもストアド プロシージャの効率が低下しますか? 違いは(もしあれば)重要ですか?なんで?

4

3 に答える 3

8

CLR通信オーバーヘッドが必要です ( と の間でデータを渡すためCLR) SQL Server

経験則は次のとおりです。

  • ロジックに大量のデータ セットの変換が含まれており、セット操作を使用して実行できる場合は、 を使用しますTSQL

  • ロジックに比較的少量のデータの複雑な計算が含まれている場合は、 を使用しますCLR

集合演算を使用すると、見かけよりもはるかに多くのことができます。ここに要件を投稿していただければ、おそらく私たちがお手伝いできるでしょう。

于 2010-01-19T23:20:54.307 に答える
5

CLR 統合のパフォーマンスを参照してください。

このトピックでは、Microsoft SQL Server と Microsoft .NET Framework 共通言語ランタイム (CLR) の統合のパフォーマンスを向上させる設計上の選択肢について説明します。

于 2010-01-19T23:16:23.383 に答える
0

「SQL Server 2008 の一部として .net CLR を使用して C# でストアド プロシージャを作成すると、T-SQL で作成した場合よりもストアド プロシージャの効率が低下しますか?」という質問。意味のある答えを与えるには本当に広すぎます。効率は、実行する操作の種類だけでなく、それらの操作をどのように行うかによっても大きく異なります。同等の T-SQL Proc よりも優れたパフォーマンスを発揮するはずの CLR ストアド プロシージャを持つことができますが、コーディングが不十分なために実際にはパフォーマンスが低下します。

質問の一般的な性質を考えると、「一般的に」、T-SQLで実行できること(複雑すぎずに)はT-SQLで実行する必要があると言えます。CLR API には結果をストリーミングするための非常に興味深いオプションがあるため、考えられる例外の 1 つが TVF である可能性があります (私は SQL Server Central の記事を書きました - 無料登録が必要です - STVFについて)。ただし、コードの CLR と T-SQL の両方のバージョンを用意し、運用レベルのデータで両方をテストしない限り、確実に知る方法はありません (通常、コードが適切に記述されていなくても、10,000 行以下で十分に機能します)。

したがって、ここでの本当の質問は次のようになります。

私は T-SQL よりも C# についてよく知っています。私は何をすべきか?

この場合、T-SQL でこの特定のタスクに取り組む方法を単純に尋ねるのが最善です。たまたままだ知らない複雑ではないソリューションが存在する可能性は十分にありますが、機能や手法などについて学ぶことで理解できるようになります。また、SQLCLR で同等のソリューションをコーディングすることもできます。そしてそれらの間のパフォーマンスを比較します。ただし、T-SQL で処理するための満足のいく答えがない場合は、SQLCLR で処理してください。

そうは言っても、私は 3 年前に SQLCLR と T-SQL のパフォーマンスに関する調査を行い、Simple-Talkで結果を公開しました。

于 2014-07-13T19:39:54.117 に答える