私はこれらの言葉があなたをうんざりさせるかもしれないことを知っています、しかし「それは依存します」。
自動番号はデータベースで自然な意味を持たないため、自動番号(代理)列ではなく、ProductIDまたはOrderId、あるいはその両方に基づいて注文することが最も可能性があります。親テーブルと同じフィールドで結合テーブルを並べ替えることができます。
まず、代理キーIDを使用している理由と方法を最初に理解します。多くの場合、インデックスを作成する方法が決まります。単一列キーで適切に機能するフレームワークを使用しているため、代理キーを使用していると思います。特定の設計上の理由がない場合は、結合テーブルの場合、問題を単純化し、自動番号IDを削除するだけで、他にメリットがない場合は削除します。主キーは(ProductID、OrderID)になります。そうでない場合は、少なくとも(ProductID、OrderID)タプルのインデックスが一意であることを確認して、データの整合性を維持する必要があります。
クラスター化インデックスは、クエリがインデックスの順序と同じ順序で結果を必要とする場合の順次スキャン/結合に適しています。したがって、アクセスパターンを確認し、シーケンシャルな複数行の選択/スキャンを実行するキーと、ランダムな個別の行アクセスを実行するキーを特定し、クラスター化されたインデックスを作成します。最もスキャンするキー、およびランダムアクセスに使用するキーの非クラスター化キーインデックス。両方をクラスター化することはできないため、どちらか一方を選択する必要があります。
注:要件が矛盾する場合は、役立つ可能性のある手法(「トリック」)があります。クエリのすべての列がインデックスで見つかった場合、そのインデックスは、クエリの要件を満たすために使用するデータベースエンジンの候補テーブルです。このファクトを使用して、データが互いに競合している場合でも、データを複数の順序で格納できます。インデックスにフィールドを追加することの長所と短所に注意し、処理されるクエリの性質と頻度を理解した後、意識的に決定してください。