indexインデックスのフィールド(単数または複数)に基づいてデータベース検索の個々の行への高速アクセスを助けることができるデータベース構造です。あなたの例では
は、CREATE INDEX
文は、列tag
を使用してテーブルの上にtags
tags_tag
という名前のインデックスを作成します。 tag
フィールドに基づいてテーブルから行を検索する場合、データベースはインデックスを使用して行をより効率的に検索します。インデックスがなければ、データベースはテーブルのフルスキャンに頼らざるを得ず、テーブルのサイズ、値の分布、正確なクエリ基準など、多くの要因によります。また、異なるデータベースは異なるタイプの索引もサポートしており、さまざまな方法でデータを検索できます。
インデックスの欠点もあります。インデックスごとに、そのテーブルの書き込み速度が低下します。行を挿入すると、索引を持つということは、行自体へのデータベース書込みに加えて、索引も更新する必要があることを意味します。
インデックスを配置する列を決定するのは難しいことがあります。また、実際のデータに対するベンチマークや実際のクエリはパフォーマンスを測定する最も正確な方法です。一般的に、検索する列の索引が必要になります。したがって、もしあなたがtag
で行を検索したいと思えば、インデックスをそこに置くのは間違いありません。しかし、あなたがアドレス帳を持っているなら、(おそらく)ストリート、ZIP /郵便番号、または電話番号で検索する必要はありませんので、書き込みパフォーマンスに値する価値はないでしょう。
主キー列には、ほとんどの場合、データベースによって自動的に生成されるインデックスがあります。また、特定の列の値を一意に保持したい場合は、UNIQUE INDEX
を作成してこれを強制することができます。
Thisここでは、データベースインデックスの経験則について尋ねます。これは役に立つかもしれません。
このような質問を下さった人々には何が間違っていますか?これは完全に有効な質問です。実際には、データベースに関するすべてのことを知っていて、インデックスの仕組みを説明できない人がたくさんいます。 –