답변:
CREATE TABLE
구문에 색인을 지정하는 방법이없는 것 같습니다 . 그러나 PostgreSQL 은이 노트에 설명 된대로 기본적으로 고유 제약 조건 및 기본 키에 대한 인덱스를 생성합니다 .
PostgreSQL은 고유성을 강화하기 위해 각 고유 제약 조건 및 기본 키 제약 조건에 대한 인덱스를 자동으로 생성합니다.
그 외에 고유하지 않은 인덱스를 원할 경우 별도의 CREATE INDEX
쿼리 에서 직접 생성해야 합니다.
Peter Krauss는 정식 답변을 찾고 있습니다.
현대 구문 (2020 년)이 있으므로 postgresql.org/docs/current/sql-createtable.html과 호환되는 예제를 설명하고 보여주십시오.
현재 버전 12까지는 PostgreSQL에서 사용할 수없는 인라인 인덱스 정의를 검색 하고 있습니다. UNIQUE / PRIMARY KEY 제약 조건을 제외하고는 기본 인덱스를 생성합니다.
[CONSTRAINT 제약 이름] {CHECK (표현식) [NO 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);
것을 인라인 인덱스 정의 구문으로 변환 할 수 있습니다 . 추신 :이 질문은 Microsoft-SQL-Server가 아닌 PostgreSQL에 관한 것입니다 (태그 참조).