postgresql中自动创建的索引:关键属性的组合索引?

时间:2016-05-11 06:03:46

标签: postgresql indexing

我不确定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
  );

1 个答案:

答案 0 :(得分:1)

Postgres将仅为以下内容自动创建索引:

  • switch添加主键会自动在主键中列出的列或列组上创建唯一的B树索引
  • primary keys添加唯一约束将自动为约束中列出的列或列组创建唯一的B树索引

在您的情况下,Postgres在列isbn上创建一个唯一索引,在列unique上创建一个唯一索引,因为您单独声明每列是唯一的,而不是两者的组合。

不会自动创建其他索引。