2013-11-02 27 views
5

我剛剛在Postgres中創建了一個表,並收到了一條通知消息,我並不完全理解隱式索引和序列。任何澄清將不勝感激。Postgres中的「隱式序列」和「隱式索引」是什麼意思?

my_database=# CREATE TABLE sites 
my_database-# (
my_database(# site_id_key serial primary key, 
my_database(# site_url VARCHAR(255), 
my_database(# note VARCHAR(255), 
my_database(# type INTEGER, 
my_database(# last_visited TIMESTAMP 
my_database(#) ; 
NOTICE: CREATE TABLE will create implicit sequence "sites_site_id_key_seq" for serial column "sites_to_search.site_id_key" 
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "sites_pkey" for table "sites_to_search" 
CREATE TABLE 
+2

這些只是postgresql自動爲您創建序列和索引的通知。 –

+0

@TI謝謝您的回覆!所以我猜測,我將爲這個表格創建兩個索引,即我創建的主鍵和隱式索引。而且序列是索引中每個數字之間的步驟? – HMLDude

+3

不,你只有1個索引,除非你手動創建更多。 PostgreSQL只是警告你,因爲主鍵需要一個索引,所以它正在創建一個索引。與序列相同的東西,除非它不是主鍵,它是'SERIAL'數據類型。 「隱式」只是指PostgreSQL正在創建你沒有明確要求的東西。你沒有要求索引或序列,但這些*暗示*你所要求的其他東西。 – jpmc26

回答

3

PostgreSQL中的某些事情是由索引和序列處理的。這些包括serial和bigserial類型,唯一約束和主鍵。這些並不是隱含在PostgreSQL中的(因此通知有點誤導),而是隱含在PostgreSQL運行的DDL中。

換句話說,索引和序列只是正常的索引和序列。它們只是由PostgreSQL自動創建,以便提供您在DDL中請求的保證和功能。

相關問題