我正在尝试 CROSS JOIN 两个表,客户和项目,因此我可以按客户逐项创建销售报告。我有 2000 个客户和 2000 个项目。
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