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