Câu trả lời:
Dường như không có bất kỳ cách nào để chỉ định một chỉ mục trong CREATE TABLE
cú pháp. Tuy nhiên, PostgreSQL không tạo chỉ mục cho các ràng buộc và khóa chính duy nhất theo mặc định, như được mô tả trong ghi chú này :
PostgreSQL tự động tạo chỉ mục cho mỗi ràng buộc duy nhất và ràng buộc khóa chính để thực thi tính duy nhất.
Ngoài ra, nếu bạn muốn một chỉ mục không phải là duy nhất, bạn sẽ cần phải tự tạo nó trong một CREATE INDEX
truy vấn riêng .
Peter Krauss đang tìm kiếm một câu trả lời kinh điển:
Có một TỔNG HỢP HIỆN ĐẠI (năm 2020), vì vậy vui lòng giải thích và hiển thị các ví dụ, tương thích với postgresql.org/docs/current/sql-createtable.html
Bạn đang tìm kiếm định nghĩa chỉ mục nội tuyến , định nghĩa này không khả dụng cho PostgreSQL cho đến phiên bản hiện tại 12. Ngoại trừ ràng buộc UNIQUE / PRIMARY KEY, tạo chỉ mục cơ bản cho bạn.
[CONSTRAINT binding_name] {CHECK (biểu thức) [NO INHERIT] | DUY NHẤT (column_name [, ...]) index_parameters | TỪ KHÓA CHÍNH (column_name [, ...]) index_parameters |
Cú pháp mẫu của định nghĩa cột nội tuyến (tại đây 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
);
Cơ sở lý luận đằng sau việc giới thiệu chúng là khá thú vị Chỉ số nội tuyến là gì? bởi Phil Factor
b VARCHAR(10) NOT NULL INDEX idx_tab_b gin (b gin_trgm_ops)
.. làm thế nào để thêm nhiều tham số hơn mà không lặp lại tên cột?
CREATE INDEX idxName ON tableName USING MethodName (fieldName optionName);
thành cú pháp của định nghĩa chỉ mục nội tuyến . Tái bút: câu hỏi này là về PostgreSQL không phải Microsoft-SQL-Server (xem thẻ).