1

我们使用WAL-E备份和恢复了一个PostgreSQL数据库(版本9.5.13),我们发现恢复后有几个索引(不是全部)坏了,大部分与String类型的字段有关。

例如,使用分析解释我们可以看到以下查询命中了与foo_name字段相关的现有索引,但没有返回行。

select * from foo where foo_name = 'xyz';

如果我们在查询中使用like,它能够返回预期的行,因为它执行全表扫描。

select * from foo where foo_name like '%xyz%';

解决方案是重新索引损坏的索引。在我们重新索引它之后,第一个查询也返回了预期的结果。

有没有人遇到过同样的问题?有人对根本原因有任何想法吗?

4

0 回答 0