2

Customer_ChronicsOracle 11gにテーブルがあります。テーブルには、以下に示す 3 つの主要な列があります。

  • 支店コード
  • 顧客ID
  • 限目

のリストでテーブルごとに分割しましたがbranch_code、今はジレンマに陥っています。どちらが良いですか:

  1. Customer_Chronics (PERIOD、CUSTOMER_ID) に一意のインデックス indexNumberOne を作成します。
  2. Customer_Chronics (branch_code、PERIOD、CUSTOMER_ID) に一意のインデックス indexNumberTwo を作成します。

実際のデータは によって一意である必要がありますperiod, customer_id。これら 2 つの列にのみ一意のインデックスを配置すると、Oracle は新しいレコードを挿入するときにテーブルのすべてのパーティションをチェックしますか?

4

2 に答える 2

3

一意性を強制する唯一の方法は、対象の列に一意の制約を使用することです。それがあなたの最初の選択肢です。この場合、データベースはすべてのパーティションのすべての値をチェックします。ただし、これは一意のインデックスであるため、テーブルが大きくなっても時間がかかりすぎないようにする必要があります (懸念がある場合)。

于 2012-08-10T07:24:56.377 に答える
1

はい、その 2 つの列のみに一意のインデックスを配置すると、Oracle はグローバル インデックスを作成し、すべてのパーティションをチェックします。大きなテーブルにはローカル インデックスを使用することを好むため、これは私が直面する課題の 1 つです (小さなテーブルは問題ないはずです)。

于 2013-03-25T06:57:26.563 に答える