 <p>If you can guarantee that the data of each table is unique, then don't use <code>UNION</code>, because it has to an extra work to make distinct rows out of it.</p> <p>Use <code>UNION ALL</code> instead, which is basically an append of rows. <code>UNION</code> or <code>UNION DISTINCT</code> (the same) like you showed is somewhat equivalent to:</p> <pre><code>SELECT DISTINCT * FROM ( SELECT user_id, grapes, day FROM steps.steps_2016_04_02 UNION ALL SELECT user_id, grapes, day FROM steps.steps_2016_04_03 UNION ALL SELECT user_id, grapes, day FROM steps.steps_2016_04_04 ) t; </code></pre> <p>And the <code>DISTINCT</code> can be a very slow operation.</p> <p>Another simpler option is to use <a href="https://www.postgresql.org/docs/current/static/ddl-partitioning.html" rel="nofollow">PostgreSQL's partitioning with table inheritance</a> and work on Tableau as a single table.</p>