データベースのパフォーマンスを改善する方法は数多くありますが、1 つの機能はどのデータベースにもほぼ共通しています。データベース インデックスは、テーブルからのデータ取得速度を向上させるために使用されるデータ構造またはオブジェクトです。
ターゲット データ、レイアウト、使用可能なリソースなどによっては、データベース インデックスを正しく使用すると、クエリの速度がほぼ半分に低下する可能性があります。
このチュートリアルでは、Oracle データベースで一意のインデックスを操作して、インデックス付きの列で重複した値が使用できないようにする方法を学習します。
Oracle ユニーク インデックス
一意のインデックスを使用して、特定の列に重複する行が格納されないようにすることができます。特定のインデックスの列に一意の規則が含まれている場合、その列に同様の値を持つ 2 つの行を追加しようとすると、一意の制約違反を示すエラーが発生します。
Oracle では、次に示すように、CREATE UNIQUE INDEX ステートメントを使用して一意のインデックスを作成できます。
table_name に UNIQUE INDEX index_name を作成します ( 列 ) ;
インデックスに含まれる列は、重複する行を受け入れません。
ユニークな表のイラストの例
一意のインデックスを作成して使用する方法を示すために、次の表を使用します。
選択する * FROM sample_data;
出力 :
First_Name 列に一意のインデックスを作成する
次のステートメント例は、first_name 列を使用して一意のインデックスを作成する方法を示しています。
sample_data に一意のインデックス first_name_unique を作成する ( ファーストネーム ) ;このインデックスを有効にすると、同じ名前の行を複数挿入できなくなります。
たとえば、次の挿入ステートメントを考えてみましょう。
sample_data に挿入 ( ID 、first_name、ip_address、btc_address、credit_card、識別子 )値 ( 十一 、 「ワラス」 、 「169.158.70.77」 、 「1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q」 、 「4017955174552」 、
「26811d77-0a3a-4397-bc33-f7835f7c7ab9」 ) ;
指定された挿入ステートメントを実行すると、次のようなエラーが発生するはずです。
[ 23000 ] [ 1 ] ORA-00001: 一意の制約 ( HR.FIRST_NAME_UNIQUE ) 違反したご覧のとおり、指定された値を挿入すると、first_name 列の一意の制約に違反します。
2 つの列を持つ一意のインデックスを作成する
複数の列で構成される一意のインデックスを作成することもできます。次の例では、first_name 列と io_address 列を使用して一意のインデックスを作成します。
sample_data に一意のインデックス verify_columns を作成する ( first_name、ip_address ) ;同様に、first_name または ip_address 列に重複する値を追加すると、一意のインデックス違反エラーが発生します。
自動一意インデックス
主キーまたは一意の制約を使用してテーブル列を宣言するとどうなるか疑問に思ったことはありませんか?
簡単に言えば、列をテーブルの主キーとして設定するか、特定の列に一意の制約を割り当てると、データベース エンジンはその列の一意のインデックスを自動的に作成します。
これにより、その列に重複する値が挿入されなくなります。
たとえば、次のステートメントを考えてみましょう。
テーブル sample_data を作成(
ID 番号、
名 varchar2 ( 50 ) 、
ip_address varchar2 ( 20 ) 、
btc_address varchar2 ( 50 ) 、
credit_card varchar2 ( 50 ) 、
識別子 varchar2 ( 40 ) 、
制約 sample_pk 主キー ( ID )
) ;
前の例では、テーブルを作成し、id 列をテーブルの主キーとして設定します。次に、その列に関連付けられた (自動生成された) 一意の制約を表示するには、次のコマンドを実行します。
選択する index_name、index_type、可視性、ステータス、TABLE_NAMETABLE_NAME = の all_indexes から 'サンプルデータ' ;
結果 :
この場合、id 列に対してデータベース エンジンによって作成された一意のインデックスを確認できます。
結論
このガイドでは、Oracle データベースで一意のインデックスを作成して使用する方法を学習しました。また、テーブルの列に主キーまたは一意の制約を割り当てるとどうなるかについても学習しました。