2

我正在尝试编写一个非常基本的推荐/追加销售查询,我可以在其中返回其他人购买的产品列表,这些产品与当前用户购买的产品具有相同的“订单”,但不是相同的产品。

我解释这个的简单方法是:

  • 用户A买了扳手和钻头
  • 用户 B 买了一个钻头和一些螺丝
  • 用户 C 买了一些钉子和一把扳手

所以我想向用户A推荐螺丝和钉子。

我有一个产品表、一个 Invoice_Header 表和一个 Invoice_Line 表。

到目前为止我所拥有的是这个(这可能更好地解释了我的要求)。

SELECT
    Products.Product_Code,
    Products.Full_Description,
    count(Products.id) as hits
FROM
    Products as Products,
    Invoice_Header as Invoice_Header,
    Invoice_Line as Invoice_Line,
    Invoice_Line as Invoice_Line_Common,
    Invoice_Line as Invoice_Line_Products
WHERE
    Invoice_Header.account_number = 765
    AND
    Invoice_Line.invoice_num = Invoice_Header.invoice_number
    AND
    Invoice_Line_Common.product_code = Invoice_Line.product_code
    AND
    Invoice_Line_Products.invoice_num = Invoice_Line_Common.invoice_num
    AND
    Products.Product_Code = Invoice_Line_Products.product_code
    AND
    Products.Product_Code != Invoice_Line.product_code
group by Products.Product_Code
order by hits
limit 0,10

现在,这就像一条狗一样运行,因为我有 800,000 条发票行。

有没有人建议更快地做到这一点?

4

0 回答 0