ファクト テーブルを、ファクト テーブル行の水平パーティションのUNION ALLビューとして表わすことは、一般に使用されている技術です。
これらのUNION ALLビューは、次の例のビューとそのビューに対するクエリーで示されているように、多くの場合は制約されたディメンション テーブルに結合されます。
CREATE VIEW jan_feb_sales AS SELECT * FROM sales1 UNION ALL SELECT * FROM sales2; SELECT SUM(quantity*amount) AS total FROM jan_feb_sales, product WHERE sales_product_key=product_key AND product_name LIKE 'French%';
このUNION ALLの書き換えの例では、制約されたディメンション テーブルがある結合は、UNION ALLの各ブランチに後付けすることができます。この例を書き換えると次のようになります。
SELECT SUM(quantity*amount) AS total FROM (SELECT quantity, amount FROM sales1, product WHERE sales_product_key=product_key AND product_name LIKE 'French%' UNION ALL SELECT quantity, amount FROM sales2, product WHERE sales_product_key=product AND product_name LIKE 'French%' ) AS jan_feb_sales ;
書き換えられたクエリーでは、スプールを作成する前に、制限された結合を使用して、sales1およびsales2からの行がフィルタされます。このため、ビューについてのスプールのサイズを減らすことができます。この書き換えはコスト ベースであり(コストベースの最適化を参照)、結合プランナーがクエリー リライト サブシステムによって呼び出されて、リクエストの元のバージョンまたは書き換えられたバージョンのどちらが効率的に実行できるかを判断します。