我不确定postgresql AUTOMATICALLY创建了哪些索引;我认为它会在Book(ibsn)上创建一个,因为它是主键,也是Book(title),因为它是一个候选键......但是我不确定postgres是否会自动创建一个组合索引所有关键属性Book(ibsn,title)。此外,它会自动创建任何其他索引吗?
CREATE TABLE Book (
isbn INTEGER CONSTRAINT B_ISBN CHECK (ISBN BETWEEN 1 AND 2000),
title VARCHAR(200) CONSTRAINT B_TITLE NOT NULL UNIQUE,
author VARCHAR(50) CONSTRAINT B_AUTH NOT NULL,
cost FLOAT DEFAULT 0.00,
lent_date DATE,
returnDate DATE,
times_lent INTEGER,
sectionID SMALLINT,
CONSTRAINT BOOK_PRIME PRIMARY KEY (isbn),
CONSTRAINT BOOK_SECT FOREIGN KEY (sectionID) REFERENCES Section(sectionID) ON DELETE CASCADE
);
答案 0 :(得分:1)
Postgres将仅为以下内容自动创建索引:
在您的情况下,Postgres在列isbn
上创建一个唯一索引,在列unique
上创建一个唯一索引,因为您单独声明每列是唯一的,而不是两者的组合。
不会自动创建其他索引。