1

atable 内に列があり、 への外部キーである列をFoo含む新しいテーブルを作成する場合、列は自動的に に対してインデックス付けされますか、または ですべての行を効率的に検索したい場合は、それでもインデックスを作成する必要がありますか?BarbFoo.abBarBar.bBarb = 1

(問題があれば、私は SQLite を使用しています。)

4

3 に答える 3

3

外部キーは、「テーブル間の既存の関係を強制する」ためにのみ使用されますが、関連する列のインデックスに基づいて自動的にインデックスが作成されるわけではありません。インデックスを作成すると でのFoo.a挿入/更新が高速化されBar.b、インデックスを作成すると でのBar.b選択が高速化されBar.bます。

于 2013-02-26T22:01:58.710 に答える
3

SQLite で外部キーを作成すると、制約が作成されるだけです。インデックスは自分で作成する必要があります。

ドキュメントから、パラグラフ3の終わり近く:

したがって、ほとんどの実際のシステムでは、各外部キー制約の子キー列にインデックスを作成する必要があります。

于 2013-02-26T22:03:19.367 に答える
1

インデックスは自分で作成する必要があります。少なくとも、それを自動的に行う DBMS は知りません。

于 2013-02-26T21:55:47.680 に答える