UNIQUE
2 つの列に制約を使用することと、単に 2 つの列の値/GUID の連結を含む 1 つの列を持ち、その上でインデックスを使用することの間に、大きなオーバーヘッドの違いはありますか? たとえば、(2 つの異なる列) を一意の制約として使用する代わりに、保持する追加の列またはランダムな GUID|John|Smith|
を追加する方が効率的でしょうか?JohnSmith
3 に答える
1
インデックス自体には大きな違いはありませんが、余分なフィールドをテーブルに追加すると、各レコードが大きくなり、追加の I/O のためにテーブルの操作が遅くなります。
于 2012-10-07T09:40:42.647 に答える
1
これらの 2 つの列を追加して、それらに一意の制約を定義します。これらはビジネスに関連しているように見え、GUID は適切ではないようです。SUBSTRING
また、それらを結合しない動機は、後でそれらを個別に処理するための操作を避けるためです。
于 2012-10-07T03:56:43.600 に答える
0
キーとして使用するために 2 つの列を連結するのはばかげているように思えます。複合キーを宣言すると、データベースはそれを完全に行うことができます。テーブルに追加の INT または GUID キーを追加する意味があるかどうかは、2 つの列が実際にテーブルの主キーであるかどうかによって異なります。そうである場合、追加の列の余分なオーバーヘッドを持ち歩く必要はありません (最初の 2 つの列が一意であることを保証するために、依然としてインデックスが必要です)。ただし、それらが実際の主キーではない場合 (例のように、ほとんどの現実のシステムでは姓と名を主キーと見なすことはできません)、別の主キーが必要になります。
于 2012-10-07T10:44:22.687 に答える