基于基数的Postgres索引方法



GCP postgres 12.8


Table A (21 Million + rows)
Join with Table B (3 Million + rows)
On A.col_x=B.Col_x
Where B.Col_y=123;

A.Col_x和B.Col_x都有索引(但对于两个表中相同的Col_x值,数千行不是唯一的(,并且联接性能良好。

筛选器"B.Col_y=123"(到目前为止尚未索引(导致"并行序列扫描"。我想在B.Col_y上创建索引。B.Col_y值在表B.中是唯一的。

专家们请考虑列B.Col_x(每个值数千(和B.Col_y(唯一(的基数,并告诉我在我的情况下,什么新索引表现最好。

  1. B.Col_y上的独立索引
  2. (B.Col_y,B.Col_x(上的双列索引
  3. (B.Col_x,B.Col_y(上的双列索引
  4. B.Col_x的容器索引包含(Col_y(
  5. 任何其他选择

此外,希望了解多列索引在Postures中是如何提高性能的,它与Oracle和SQL Server有何不同。如何从左到右放置低基数列和高基数列等等

祝福

根据您的描述,理想的访问路径应该是嵌套的循环联接,B作为外部表。

因此,您应该在B(Col_y)上创建一个索引。再加上现有的索引omA(Col_x),就可以了。

最新更新