Postgresql 我是否应该在具有重复值的列上创建索引,以及在查找中的位置

Postgresql 我是否应该在具有重复值的列上创建索引,以及在查找中的位置,postgresql,database-indexes,Postgresql,Database Indexes,我有一个物化视图(这在很大程度上是一个)需要在其中进行where in类查询。 我想查询的列(比如view\u id)肯定有重复(15-20) where in查询也将非常大,即-它将包含许多要查询的视图id 我是否应该继续在该列上创建索引? 它会给我一些性能改进吗 我有另一列,这将帮助我有一个多列索引(唯一)。这是一个更好的选择吗 对于性能方面的此类问题,没有什么可以替代使用您的确切案例进行测试。尝试它没有什么坏处(即使是在生产系统上,但如果可以的话,可以使用测试系统!),除了可能会降低性能,

我有一个物化视图(这在很大程度上是一个)需要在其中进行
where in
类查询。 我想查询的列(比如
view\u id
)肯定有重复(15-20)

where in
查询也将非常大,即-它将包含许多要查询的
视图id

我是否应该继续在该列上创建索引? 它会给我一些性能改进吗


我有另一列,这将帮助我有一个多列索引(唯一)。这是一个更好的选择吗

对于性能方面的此类问题,没有什么可以替代使用您的确切案例进行测试。尝试它没有什么坏处(即使是在生产系统上,但如果可以的话,可以使用测试系统!),除了可能会降低性能,直到撤销所做的操作。博士后让这种修补变得安全

@tim biegeleisen的第一句话很贴切:通过你的设置,你的基数减少了,但这并不意味着这不是一场胜利


简而言之,试试看。没有比您自己的数据集和访问模式提供的更好的答案了。

不是答案,但许多重复值意味着基数较低,因此索引性能较差,但这并不意味着不尝试索引。您可以随时测试性能。感谢@TimBiegeleisen的意见,我也非常感谢。但我现在还不能进行可伸缩性测试。基数必然会随着数据而增长。但是是的,不超过实际数据的1/20-1/15。那么,我是否应该尝试第二个选项(多列索引)?当然,复合索引应该增加基数,但这只有在您计划同时使用这两列时才有帮助。在查询中根本不需要使用另一列。好的,那么,如果我做对了,我就只能在那一列上尝试索引了(