我想要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