ストアドプロシージャの設計に関するベストプラクティスについて、テーブル内のレコードを更新するストアドプロシージャは、更新するレコードを識別するために主キーを使用する必要がありますか、それとも一意キーを使用する必要がありますか?
一意キーは送信する追加のパラメーターがたくさんあるようで、主キーがわからない状況は考えられません。
ストアドプロシージャの設計に関するベストプラクティスについて、テーブル内のレコードを更新するストアドプロシージャは、更新するレコードを識別するために主キーを使用する必要がありますか、それとも一意キーを使用する必要がありますか?
一意キーは送信する追加のパラメーターがたくさんあるようで、主キーがわからない状況は考えられません。
「一意のキー」とは、「ビジネスキー」を意味すると思います。外部ソースから大まかに同期されているデータベースがある場合は、ストアドプロシージャのパラメータとしてビジネスキーを使用すると便利です。
製品の注文、サービスのアクティブ化、プロセスの開始などのために、別の会社からフラットファイルを受け取ったとします。彼らはおそらく主キーを知らず、名前で要求される可能性があります:(会社X、サービスY、アクティブ化)一意の会社名、一意のサービス名、一意の状態に基づいてストアドプロシージャを呼び出します。確かに、リモートシステムはIDを使用する必要があると言うかもしれませんが、それは時々あなたのコントロールの外にあります。
別の例:アプリケーションレベルで実行されるレプリケーション。シーケンスが2つのデータベース間で同期していない可能性があるため、リモートレコードを参照する方がビジネスキーの方が安全です。
この質問には2つの異なる側面があります。
1 /使用しているインデックスのサイズ:最小のものを選択します(たとえば、列のサイズ)
2 /使用しているインデックスの列の非null属性:(エンジンがnull許容列で一意のインデックスを許可している場合)できれば、非null可能列に配置されるインデックスを選択します。
3 /インデックスのテーブルスペース:パフォーマンスを向上させる、インデックス用の特別なストレージがあるかどうかを確認することもできます(マウントされたインデックス...)
4 /列タイプ:通常、小さい数字はテキストよりも解析が高速です(ソースがないことをお詫びします。注意してください)
今はこれ以上考えられませんが、他の人がリストを完成させると確信しています。
乾杯。