我有一个带有多列索引的表,我怀疑索引的正确排序以获得查询的最大性能。
场景:
PostgreSQL 8.4,大约有一百万行的表
c1列中的值可以有大约100 个不同的值。我们可以假设这些值是均匀分布的,因此每个可能的值都有大约 10000 行。
c2列可以有1000 个不同的值。每个可能的值都有 1000 行。
搜索数据时,条件始终包含这两列的值,因此该表具有结合 c1 和 c2 的多列索引。如果您的查询仅使用一列进行过滤,我已经阅读了正确排序多列索引中的列的重要性。在我们的场景中情况并非如此。
我的问题是这个:
鉴于其中一个过滤器选择的数据集要小得多,如果第一个索引是最具选择性的索引(允许较小集合的索引),我可以提高性能吗?在看到引用文章中的图形之前,我从未考虑过这个问题:
图片取自有关多列索引的参考文章。
查询使用来自两列的值进行过滤。我没有查询,只使用一列进行过滤。他们都是:WHERE c1=@ParameterA AND c2=@ParameterB
。还有这样的条件:WHERE c1 = "abc" AND c2 LIKE "ab%"