ホームページ >データベース >Oracle >Oracleでインデックスを変更する方法

Oracleでインデックスを変更する方法

青灯夜游
青灯夜游オリジナル
2022-01-25 17:10:1917318ブラウズ

Oracle でインデックスを変更する方法: 1. 「alter index oldindex name rename to newindex name;」ステートメントを使用してインデックスの名前を変更します; 2. 「dropindex」ステートメントを使用して元のインデックスを削除しますインデックスを作成し、必要に応じて "CREATE" INDEX" ステートメントを使用して同じ名前のインデックスを作成します。

Oracleでインデックスを変更する方法

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

説明

1) インデックスはデータベース オブジェクトの 1 つで、本のインデックスと同様に、データの検索を高速化するために使用されます。データベースにインデックスを作成すると、データベース プログラムが結果をクエリするときに読み取る必要のあるデータの量を減らすことができます。これは、書籍でインデックスを使用すると、本全体を読まなくても必要な情報を見つけることができるのと同様です。

2) インデックスはテーブル上に構築されるオプションのオブジェクトです。インデックスの鍵は、デフォルトの全テーブル スキャン取得方法をソートされたインデックス キーのセットに置き換えることで、取得効率を向上させます

3) インデックスは、関連するテーブルやデータから論理的、物理的に独立しています。インデックスを作成または削除しても、基本テーブルには影響しません;

4) インデックスが作成されると、それが実行されますテーブル上 DML 操作中 (挿入、変更、または削除関連の操作を実行するときなど)、Oracle がインデックスを自動的に管理し、インデックスの削除はテーブルに影響を与えません

5) インデックスは透過的ですテーブルに何があるかに関係なく、ユーザーにとってはインデックスの有無に関わらず、SQL ステートメントの使用法は変わりません

6) Oracle は主キーの作成時に列にインデックスを自動的に作成します

インデックスの原則

1. インデックスがない場合、特定のレコードを検索するとき (たとえば、name='wish' で検索する場合)、ウィッシュが 1 つだけであるという保証はなく、すべてのレコードを検索する必要があります。

2 。名前にインデックスが作成されている場合、Oracle はテーブル全体の検索を実行します。 , 各レコードの名前の値を昇順に並べてインデックス エントリ (名前と ROWID) を構築し、インデックス セグメントに格納します。クエリ名が希望の場合は、対応する場所を直接見つけることができます。 3. インデックスを作成したからといって必ずインデックスが使用されるわけではありません。Oracle はテーブルの情報を自動的にカウントし、インデックスを使用するかどうかを決定します。テーブル内のデータが非常に少ない場合、フル テーブル スキャンの速度はすでに非常に高速です。高速です。インデックスを使用する必要はありません。

インデックスの使用法 (作成、変更、削除、表示)

1. インデックスの作成構文

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];                                    --表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

2. インデックスを変更します

1) インデックスの名前を変更します

alter index index_sno rename to bitmap_index;

2) インデックスをマージします (テーブルが一定期間使用された後)時間が経つと、インデックスで断片化が発生します。このとき、インデックスの効率が低下します。インデックスを再構築するか、インデックスをマージするかを選択できます。マージされたインデックスの方法の方が優れており、追加のストレージ領域を必要とせず、コストも高くなります。下段)

alter index index_sno coalesce;

3) インデックスを再構築する

方法 1: 元のインデックスを削除し、必要に応じて同じ名前のインデックスを作成します。

方法 2:

alter index index_sno rebuild;

3. インデックスを削除します

drop index index_sno;
4. インデックスを表示します

select index_name,index-type, tablespace_name, uniqueness from all_indexes where table_name ='tablename'; -- eg: 
create index index_sno on student('name'); select * from all_indexes where table_name='student';

推奨チュートリアル: "

Oracleチュートリアル

>>

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

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