我想要CROSS JOIN兩個表,客戶和物品,這樣我就可以通過物料創建銷售報表了。我有2000個客戶和2000個項目。更快的CROSS JOIN替代方案 - PostgreSQL
SELECT customer_name FROM customers; --Takes 100ms
SELECT item_number FROM items; --Takes 50ms
SELECT customer_name, item_number FROM customers CROSS JOIN items; Takes 200000ms
我知道這400萬行,但有可能得到這個跑得更快?我想與銷售表像這樣最終加入這個:
SELECT customer_name, item_number, sales_total FROM customers CROSS JOIN items LEFT JOIN sales ON (customer.customer_name = sales.customer_name, item.item_number=sales.item_number);
銷售表顯然不會有所有客戶或所有項目,所以這裏的目標是有一個報告,顯示所有客戶和所有物品以及已售出而未售出的物品。
我使用PostgreSQL 8.4
你** **實際上希望顯示爲所有客戶/項的所有組合,即使他們沒有他們,我的意思是給定的CUTOMER可能只有1項,那麼你可能會顯示1999年不需要的項目? – 2010-01-14 19:53:38
其實我是這麼做的,因爲我想看看顧客還沒有訂購什麼,所以我可以試着把它賣給他們。 – bendiy 2010-01-17 00:39:52