2013-10-14 5 views
14

ルックアップとソートの速度を向上させるためにインデックスを作成する列がいくつかあります。その列は、例えば、UNIQUEとしてマークされている場合:UNIQUE制約は、Sqliteで明示的なインデックスの必要性を排除しますか?

CREATE INDEX foo_bar ON foo(bar) 

検索や並べ替えのためのスピードボーナスを提供しないだろう?

CREATE TABLE "foo" (
    "bar" TEXT NOT NULL UNIQUE 
) 

は今、これがあるようにインデックスを付けコラム「バー」でありますか

答えて

12

UNIQUEおよびPRIMARY KEY実際には、自分のルックアップを高速化するために内部インデックスを作成するため、独自のインデックスを作成する必要はありません。
documentationを参照)

+0

「重要なオーバーヘッド」に関する注意事項は、SQLiteページでは使用できなくなりました。おそらく、これはもはやケースではなく、オーバーヘッドなしで明示的なインデックスを作成できるということを意味します。 –

+0

@riot_starterさて、オーバーヘッドは明示的なインデックスのオーバーヘッドよりも大きいことはありません –

+0

これはオーバーヘッドであれば、EXPLAIN QUERY PLANでより意味のあるインデックス名を使用する場合と比較して無視できると思います(SQLiteは冗長な内部インデックスを作成しません)。 –

関連する問題