ホームページ  >  記事  >  データベース  >  Oracleのインデックスとは何ですか

Oracleのインデックスとは何ですか

青灯夜游
青灯夜游オリジナル
2021-12-24 11:25:235967ブラウズ

Oracle では、インデックスは、サーバーがテーブル内の行を迅速に検索できるようにするデータベース構造です。アクセスを高速化することを目的として、テーブルの 1 つ以上の列に構築される補助オブジェクトです。テーブル内のデータに。インデックスの機能: 1. データに迅速にアクセスする; 2. データベースのパフォーマンスを向上させるだけでなく、列の値などの一意性を確保することもできます。

Oracleのインデックスとは何ですか

このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。

#インデックスとは何ですか?

Oracle では、インデックスはサーバーがテーブル内の行を迅速に検索できるようにするデータベース構造です。

  • インデックスは、テーブル内のデータへのアクセスを高速化するために、テーブルの 1 つ以上の列に構築される補助オブジェクトです。

  • oracle ストレージインデックスの構造は B* 番号 (バランスツリー) であり、インデックスはルートノード、分岐点、葉点で構成され、上位レベルのインデックスブロックには下位レベルのインデックス ブロックのインデックス データの場合、リーフ ノードにはインデックス データと、行の実際の位置を決定する ROWID が含まれます。

データベースにインデックスを作成すると、主に以下の機能があります。

(1) データに素早くアクセスします。

(2) I/O 操作の削減

(3) データベースのパフォーマンスを向上させるだけでなく、列値の一意性も確保できます。

(4) テーブル間の参照整合性の実装

(5) データの取得に orderby 句と groupby 句を使用する場合、インデックスを使用すると、並べ替えとグループ化の時間を短縮できます。

使用する場合:

  • where の後にクエリ条件として使用されるフィールドは、インデックス付けに適しています。

使用しない場合:

  • 繰り返しフィールドが多数あります;

  • where 以降のクエリ条件として使用されないフィールド;

  • テーブル内のレコードが少なくなります。

インデックスの使用方法:

インデックスの作成:

CREATE [UNIQUE] | [BITMAP] INDEX index_name  --unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2    --bitmap,创建位图索引
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]                                 --指定索引在数据块中空闲空间
[STORAGE (INITIAL n2)]
[NOLOGGING]                                  --表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用
[NOLINE]
[NOSORT];                                    --表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

たとえば、

製品テーブル:

-- Create table
create table TB_GOODS
(
  goods_id    VARCHAR2(64) not null,
  goods_name  VARCHAR2(256) not null,
  goods_price VARCHAR2(64) not null,
  status      VARCHAR2(1) not null
);

インデックスの作成:

--这里unique可以省略,若省略则索引为非唯一索引
create index UI_tb_goods on tb_goods(goods_name);
--若使用unique则为唯一索引
create unique index un_tb_goods on tb_goods(goods_name);
--括号中添加两列则为组合索引
create unique index un2_tb_goods on tb_goods(goods_name,status);
--括号中添加三列,其顺序没有关系,效果是一样的
create unique index un3_tb_goods on tb_goods(goods_name,goods_price,status);

一意のインデックスのもう 1 つの機能は、列が同じ値を持つことができないように制御することです。

クエリ インデックス:

select * from user_indexes where table_name='表名';
select * from user_ind_columns  where index_name='索引名';

推奨チュートリアル: 「

Oracle チュートリアル

以上がOracleのインデックスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。