ネイティブ コンパイル ストアド プロシージャの特徴:
通常、アプリケーションのパフォーマンスが重要な部分に使用されます。
頻繁に実行されます。
非常に高速であると予想されます。
ネイティブ コンパイル ストアド プロシージャを使用することに伴うパフォーマンス上の利点は、プロシージャによって処理される行の数と論理の量に従って大きくなります。 たとえば、次の 1 つ以上を使用すると、ネイティブ コンパイル ストアド プロシージャのパフォーマンスが向上します。
集約。
入れ子になっているループ結合。
複数ステートメントの SELECT、INSERT、UPDATE、および DELETE 操作。
複合式。
条件ステートメントとループなど、手続き型のロジック。
単一行のみを処理する必要がある場合は、ネイティブ コンパイル ストアド プロシージャを使用しても、パフォーマンス上の利点が得られるとは限りません。
サーバーでパラメーター名をマップし、型を変換する必要がないようにするには、次のようにします。
プロシージャに渡されるパラメーターの型をプロシージャ定義の型に一致させます。
ネイティブ コンパイル ストアド プロシージャを呼び出すときに序数 (名前のない) パラメーターを使用します。 最も効率的に実行するために、名前付きパラメーターを使用しないでください。
ネイティブ コンパイル ストアド プロシージャでの (非効率的な) 名前付きパラメーターの使用は、XEvent hekaton_slow_parameter_passing ( reason=named_parameters) を介して検出できます。
同様に、XEvent hekaton_slow_parameter_passingとreason=parameter_conversionを使用して、一致しない型の使用を検出できます。
メモリ最適化テーブルを使用する際には、多くのシナリオで再試行ロジックを実装する必要があり、また特定の機能制限を回避する必要があるため、解釈型のラッパーストアド・プロシージャ Transact-SQL を作成することを検討するかもしれません。 例については、「 Memory-Optimized テーブルでのトランザクションの再試行ロジックのガイドライン」を参照してください。