我有一个名为“hash”的唯一索引列
但是当我运行查询时:
SELECT *
FROM urls_0
WHERE hash = '\x0009cb31d8a6c0c64f6877c22a781804'::bytea
有两行,由于唯一违规,我无法重新索引该索引。这里发生了什么。我正在使用PostgreSQL 9.3.2
答案 0 :(得分:2)
如果使用CREATE INDEX CONCURRENTLY子句,可能会发生这种情况。
如果在扫描表时出现问题,例如唯一索引中的唯一性违规,则CREATE INDEX命令将失败但会留下“无效”索引。出于查询目的,将忽略此索引,因为它可能不完整;但它仍然会消耗更新开销。