15. インデックス
SQL 15章 インデックス
15.1. インデックスとはインデックスとは、データの検索速度を向上させるために、どの行がどこにあるかを示した索引のことです。データを検索するときに、目的のデータが見つかるまですべての行を一行ずつ調べていくよりも、索引を利用して目的の行の場所を見つけてからその行のデータを読み取る方が効率的だという考えにより、非常によく用いられる方法です。 特に大きなテーブルでは、インデックスを用いることにより、大幅にそのパフォーマンスが改善されます。 15.2. インデックスの基本構文インデックスの概念について SQL92 では定義されていません。ここでは ORACLE と PostgreSQL について説明します。 インデックスを定義するには、CREATE INDEX 文を使用します。基本構文は次の通りです。 <<ORACLE>>
CREATE [UNIQUE] INDEX インデックス名
ON テーブル名(列名 [ ASC | DESC ],...) ;
<<PostgreSQL>>
CREATE [UNIQUE] INDEX インデックス名
ON テーブル名(列名,...) ;
UNIQUE を指定すると、対象となる列の値に重複が許されなくなります。また、ORACLE では列名の後に ASC を指定すると昇順に、DESC を指定すると降順にインデックスが作成されます。指定しない場合は昇順になります。 定義したインデックスを削除する場合には、ORACLE も PostgreSQL ともに、次の DROP INDEX 文を使用します。 DROP INDEX インデックス名 ; 15.3. インデックスの利用インデックスは、データ検索のパフォーマンスを改善するために利用されるものです。しかし、その利用の仕方が悪いと返ってパフォーマンスを低下させてしまうこともあります。インデックスを効率よく利用するために、次の点に注意する必要があります。 ■パフォーマンス向上
■パフォーマンス低下
■その他
実習課題1販売管理データベースから、支払った金額の大きいもの順に、顧客名と支払った合計金額を表示させたいとき、あらかじめどのテーブルのどの列にインデックスを定義しておけばよいか? PostgreSQL で、そのインデックスを定義する SQL 文を記述しなさい。一回あたりの支払い金額は、次の式で求めるものとする。複数台自動車を購入した顧客はそれらすべてを合計したものを支払い金額とする。
|
![]()
![]()
|