title: postgresql: vertical partitioning brings no performance improvement
body: <p>I struggle with optimizing the performance of my table with vertical partitioning. The following Select Statement should be more optimized from postgre imho:</p>
  
  <pre><code>SELECT 
    "ProductView".name, 
    "ProductView".price, 
    "ProductView".pid
  FROM 
    "DefaultSchema"."ProductView";
  </code></pre>
  
  <p>My Schema looks like this:</p>
  
  <pre><code>tables:
  ProductA(**pid**, name, price)
  ProductB(**pid**, desc)
  view:
  Product(**pid**,name, price, desc)
  </code></pre>
  
  <p>The SQL:</p>
  
  <pre><code>CREATE TABLE "DefaultSchema"."ProductA"
  (
    pid integer NOT NULL,
    price integer,
    name text,
    CONSTRAINT pk_pa PRIMARY KEY (pid)
  )
  
  CREATE TABLE "DefaultSchema"."ProductB"
  (
    pid integer NOT NULL,
    "desc" text,
    CONSTRAINT "PK_PB" PRIMARY KEY (pid),
    CONSTRAINT "FK_PID" FOREIGN KEY (pid)
        REFERENCES "DefaultSchema"."ProductA" (pid) MATCH SIMPLE
        ON UPDATE CASCADE ON DELETE CASCADE
  )
  
  CREATE OR REPLACE VIEW "DefaultSchema"."ProductView" AS 
   SELECT p1.pid,
      p1.price,
      p1.name,
      p2."desc"
     FROM "DefaultSchema"."ProductA" p1
       JOIN "DefaultSchema"."ProductB" p2 ON p1.pid = p2.pid;
  </code></pre>
  
  <p>So you might recognise I do not really need ProductB for the select query. Nevertheless it is joined during the process of execution, as you can see here. </p>
  
  <pre><code>"Hash Join  (cost=36.10..74.61 rows=1160 width=40) (actual time=0.090..0.105 rows=7 loops=1)"
  "  Hash Cond: (p2.pid = p1.pid)"
  "  -&gt;  Seq Scan on "ProductB" p2  (cost=0.00..22.30 rows=1230 width=4) (actual time=0.022..0.027 rows=7 loops=1)"
  "  -&gt;  Hash  (cost=21.60..21.60 rows=1160 width=40) (actual time=0.030..0.030 rows=7 loops=1)"
  "        Buckets: 1024  Batches: 1  Memory Usage: 1kB"
  "        -&gt;  Seq Scan on "ProductA" p1  (cost=0.00..21.60 rows=1160 width=40) (actual time=0.010..0.017 rows=7 loops=1)"
  "Total runtime: 0.299 ms"
  </code></pre>
  
  <p>My Question is how can I force postgre to scan only ProductA? Do I need an addional constraint, edit the config file or is it not possible to gain a performance advantage through vertical partitioning in postgre? Thanks a lot in advance. :)</p>