2016-06-25 11 views
0

は、最も頻繁にクエリが、ユーザ名、年齢と国にwhere句に基づいており、4つの列インデックスを作成する列とその理由は何ですか?

create table user 
(
    id int primary key, 
    username varchar(100), 
    age int, 
    country varchar(100) 
); 

でテーブルを考えます。例:

select * 
from user 
where username = "Join Smith" and age > 18 and country = "UK" 

最も効率的なインデックスを作成する方法とその理由は何ですか。

select * 
from user 
where username like "John Smith" and age = 18 and country = "UK" 

にクエリの変更は、私はすべての3つの列のユーザー名、年齢と国に複合インデックスを使用する場合、どのよう

。しかし、これがどの場合に最も効率的かどうかはわかりません。助けてください。

+0

これはどのRDBMSですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –

答えて

0

完全に一致すると、それは、インデックスの最初の列、それは結果 をフィルタリングするかどうか、それは正確に実行されますインデックスに2列目として、年齢が追加されますので、両方のクエリの国で列の順序国、年齢 次にインデックスを作成します。一致または範囲のクエリ

0

id(主キー、通常は一番左のカラム)を使用可能なカラムと異なるようにして、このedit = Falseのままにしておくことをお勧めします。

これで、上記のいずれかのクエリを実行する際に問題が発生するはずはないと思います。

関連する問題