テーブル作成時、カラムにUNIQUEをつけると自動でインデックステーブルが作成されますが、このインデックステーブルで、通常のselect検索も早くなるのでしょうか?
具体的には、ユニークなカラムidを持つテーブルtableA
create table tableA( id INTEGER UNIQUE, some_column INTEGER );
を作ったあとで、そのidにあらためて
CREATE INDEX id ON tableA (id);
と、インデックスを張る必要があるのでしょうか。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
SQLの規格としてはUNIQUE制約を指定した時にINDEXを作成するかどうかは決められていませんが(SQL規格にはINDEXの記述がない)、私が知るかぎりはPRIMARY KEY制約、UNIQUE制約を指定した場合はすべてのRDMSでINDEXが暗黙に作成されます。
PostgreSQLも同様です。
ですから、
CREATE INDEX id ON tableA (id);
とする必要はありません。PostgreSQLではエラーになりませんが、Oracleなどでは既に索引が作成されている列に同一の内容で索引を作成しようとするとエラーになります。
暗黙に作成されたINDEXも暗黙に作成されたINDEXも同様に使用されますので速度の向上が見込めます。
後、UNIQUE制約ですが
Oracle→NULLは複数個許可する。暗黙作成される索引にNULLを含めない。
PostgreSQL,MySQL→NULLは複数個許可する。暗黙作成される索引にNULLを含む。
SqlSERVER→NULLは1個のみ許可する。
DB2→NULLを許可しない
と扱いが違うので注意してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
postgreSQLの正規表現
-
SELECT結果から重複行を除く方法
-
postgreSQLのint型は桁数指定が...
-
INDEXの無効化
-
DBリンクエラーについて
-
SQLでスキーマ名(所有者名)の...
-
表領域(users)の中身を整理したい
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
カラムの存在チェック
-
Access レコードを追加できませ...
-
スキーマ
-
ExcelVBAにて外部データ(*.csv...
-
売価変更がある商品の売上金額
-
ORA-00959: 表領域'****'は...
-
トリガーとシーケンスについて
-
AS/400のDBについて
-
SQL 同テーブル、同フィールド...
-
CSVデータの取り込み
-
UNDO_RETENTION初期化パラメー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
UNIQUEをつけたときのINDEXテー...
-
前方一致が動的に変更される場...
-
3つのテーブルの処理について
-
SQL文作成のお願い
-
postgreSQLのオートナンバーに...
-
クエリアナライザのsp_helpコマ...
-
SQLで検索結果の記事を表示したい
-
SQL SELECT文 別テーブルのレコ...
-
PostgressからMySQL(MariaDB)...
-
plpgsqlのエスケープ文字について
-
近い時間によるテーブル結合
-
マルチテーブル・インサート
-
講座のある日を抽出したい
-
次の条件を満たすSQL文をご...
-
特定カラムの値を変更したいの...
-
postgreSQLの正規表現
-
SQL文の実行に苦労しています。
-
phpPgAdminからSQL文を発行し、...
おすすめ情報