回答:
CREATE TABLE
構文でインデックスを指定する方法はないようです。ただし、PostgreSQLは、このメモで説明されているように、デフォルトで一意の制約と主キーのインデックスを作成します。
PostgreSQLは、一意性を強制するために、一意性制約と主キー制約ごとにインデックスを自動的に作成します。
それ以外に、一意でないインデックスが必要な場合は、別のCREATE INDEX
クエリで自分で作成する必要があります。
Peter Kraussは正解を探しています。
現代の構文(2020年)があるので、postgresql.org / docs / current / sql-createtable.htmlと互換性のある例を説明して示してください
現在のバージョン12までのPostgreSQLでは使用できないインラインインデックス定義を検索しています。UNIQUE/ PRIMARY KEY制約を除き、基礎となるインデックスが作成されます。
[CONSTRAINT constraint_name] {CHECK(expression)[INHERIT] | UNIQUE(column_name [、...])index_parameters | PRIMARY KEY(column_name [、...])index_parameters |
インライン列定義のサンプル構文(ここではSQL Server):
CREATE TABLE tab(
id INT PRIMARY KEY, -- constraint
c INT INDEX filtered (c) WHERE c > 10, -- filtered index
b VARCHAR(10) NOT NULL INDEX idx_tab_b, -- index on column
d VARCHAR(20) NOT NULL,
INDEX my_index NONCLUSTERED(d) -- index on column as separate entry
);
それらを導入する背後にある理論的根拠は非常に興味深いですインラインインデックスとは何ですか?フィル・ファクター
b VARCHAR(10) NOT NULL INDEX idx_tab_b gin (b gin_trgm_ops)
か?たとえば、列名を繰り返さずにパラメーターを追加する方法は?
CREATE INDEX idxName ON tableName USING MethodName (fieldName optionName);
をインラインインデックス定義の構文に変換しようとすることができます。PS:この質問はMicrosoft-SQL-ServerではなくPostgreSQLに関するものです(タグを参照)。