3

主キーとして次の列を持つテーブルがある場合:Username, Title, Start Dateデータベースは自動的にインデックスを作成します。

  1. ユーザー名とクエリの開始日で選択したい場合...上記のインデックスを使用しますか、それとも追加のインデックスを指定する必要がありますか?
  2. タイトルと開始日が一意に識別されるが、ユーザー名も主キーに追加する場合、それはスーパーキーになりますか?
4

1 に答える 1

4

1)ユーザー名とクエリの開始日で選択する場合、上記のインデックスを使用しますか、それとも追加のインデックスを指定する必要がありますか?

たとえば、次のような複雑な状態があります。

username = 'blah-blah-blah' AND startdate > '01.01.2010'

テーブルのPKが次のように定義されている場合:

PRIMARY KEY (Username, Title, StartDate)

次に、ユーザー名フィールドを含む最初の部分にインデックスが使用されます。startdate値は自然な順序で評価されます。

複雑な条件の両方の部分にインデックスを使用する場合は、開始日に追加のインデックスを作成するか、PKのフィールドの順序を変更します。

PRIMARY KEY (Username,  StartDate, Title)

2)タイトルと開始日が一意に識別されているが、主キーにユーザー名も追加している場合、それはスーパーキーになりますか?

追加のフィールドを持つ一意のインデックスを乱用しないことをお勧めします。あなたの場合、タイトルと開始日にPKを作成してから、(必要に応じて)ユーザー名フィールドに個別のインデックスを作成します。

于 2011-09-11T18:39:03.457 に答える