主キーとして次の列を持つテーブルがある場合:Username, Title, Start Date
データベースは自動的にインデックスを作成します。
- ユーザー名とクエリの開始日で選択したい場合...上記のインデックスを使用しますか、それとも追加のインデックスを指定する必要がありますか?
- タイトルと開始日が一意に識別されるが、ユーザー名も主キーに追加する場合、それはスーパーキーになりますか?
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を作成してから、(必要に応じて)ユーザー名フィールドに個別のインデックスを作成します。