web-dev-qa-db-ja.com

インデックスを作成するとどうなりますか

このempidテーブルのemployee列にインデックスを作成すると、正確にはどうなりますか

CREATE TABLE employee
(
  empid number(5),
  ename varchar2(30),
  sal   number(10,2)
);

テーブルに以下のデータが含まれているとしましょう

empid   ename      sal
1       hema       10000
3       suma       10000
2       bheema     15000
4       bhama      20000
5       panama     25000

正確に私の疑いは何が作成され、インデックスに内部的に保存されるかです....パフォーマンスを改善するために、empidのソートされたコンテンツまたは行に関連する他のいくつかの情報に関係なく...?

3
Vamsi Krishna

インデックス、そのさまざまなタイプ、および内部構造については、 documentation で説明しています。

2
David Aldridge

http://use-the-index-luke.com/sql/anatomy の「SQLインデックスの分析」セクションで、答えを見つける必要があります。

1
michalzuber

Indices can be implemented using a variety of data structures. Popular indices include balanced trees, B+ trees and hashes.

ほとんどの場合、バランスの取れたツリーが作成され、選択クエリのパフォーマンスが向上します。ツリー内の各ノードには、テーブルデータにすばやくアクセスするためのインデックス列とROWIDが含まれます。

0
makc

CREATE INDEX I01 ON EMPLOYEE ( EMPID )を実行するとします。
テーブルの内容は変更されません。インデックスを作成すると、ビューUSER_INDEXESuser_tab_columns,user_objectsなどに表示される構造が登録されます。また、セグメントはデフォルトのテーブルスペースに作成されます(簡略化のため、テーブルにデータがない場合や、セグメントの作成が設定されています)、user_segmentsuser_extentsに表示されます。内部セグメントには、empid値とROWIDを含むツリー構造の格納された表現が格納されます。 ROWIDはテーブル行へのポインタとして理解できます。ツリーはブランチノードとリーフノードで構成されます。リーフノードのみに値が含まれ、ブランチノードはリーフノードを検索する役割を果たします。
デフォルトでは、順序は昇順です。

0
igr

私はかつてインデックスに頭を抱えてそれらがどのように機能するかを理解する必要があり、記事を見つけました "Understanding Indexes" byrleishman非常に便利で直感的です。この著者による その他の素晴らしい投稿 もあります。

0