1
我有一個唯一的索引列命名爲「哈希」Postgres的,重複的唯一索引
然而,當我運行查詢:
SELECT *
FROM urls_0
WHERE hash = '\x0009cb31d8a6c0c64f6877c22a781804'::bytea
有兩行,我不能重新索引,因爲獨特的違規指數。這裏發生了什麼。我正在使用PostgreSQL 9.3.2
我有一個唯一的索引列命名爲「哈希」Postgres的,重複的唯一索引
然而,當我運行查詢:
SELECT *
FROM urls_0
WHERE hash = '\x0009cb31d8a6c0c64f6877c22a781804'::bytea
有兩行,我不能重新索引,因爲獨特的違規指數。這裏發生了什麼。我正在使用PostgreSQL 9.3.2
如果您使用CREATE INDEX CONCURRENTLY子句,可能會發生這種情況。
如果在掃描表,如唯一性衝突的唯一索引出現問題,CREATE INDEX命令會失敗,但留下一個「非法」索引。爲了查詢目的,該索引將被忽略,因爲它可能不完整;但是它仍然會消耗更新開銷。
我認爲這可能是正確的答案,但我不同時使用CREATE INDEX。該索引是首先創建的。 –
您是** 100%肯定**該*唯一*索引僅存在於名爲* hash *的列* urls_0 *中? –
請問您能否連接到數據庫,執行以下查詢並在此處發佈結果? 'SELECT indexrelid :: regclass,indisunique,indisvalid FROM pg_catalog.pg_index WHERE indrelid ='urls_0':: regclass;' – MatheusOl
@MarceloZabani:我確定 –