gpt4 book ai didi

mysql - 查询顾客与列出的产品一起购买了什么

转载 作者:行者123 更新时间:2023-11-29 09:18:33 26 4
gpt4 key购买 nike

我正在尝试优化一个非常旧的查询,但我无法理解它。我想要存档的结果是,我想向网上商店的访问者推荐其他客户感兴趣的内容,即他们与访问者正在查看的产品一起购买的其他产品。

我有一个子查询,但它非常慢,大约需要 15 秒处理大约 8 000 000 行。

布局是,放入用户购物篮的所有产品都保存在表 wsBasket 中,并由 basketid 分隔(在另一个表中与成员(member))。

在这个例子中,我想列出用户与productid 427一起购买的所有最受欢迎的产品,但不列出productid 427本身。

SELECT productid, SUM(quantity) AS qty 
FROM wsBasket
WHERE basketid IN
(SELECT basketid
FROM wsBasket
WHERE productid=427) AND productid!=427
GROUP by productid
ORDER BY qty
DESC LIMIT 0,4;

非常感谢任何帮助!希望这至少对某人有意义:)

 

更新1:感谢您的评论,这是我的答案,它们不适合评论字段。

在上面的查询中使用 EXPLAIN 我得到了以下结果。请注意,我的表上没有任何索引(id 字段上的主键除外),我想修改查询以从索引中受益并将索引放置在正确的键上。

+----+--------------------+----------+------+---------------+------+---------+------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+----------+------+---------------+------+---------+------+------+----------------------------------------------+
| 1 | PRIMARY | wsBasket | ALL | NULL | NULL | NULL | NULL | 2821 | Using where; Using temporary; Using filesort |
| 2 | DEPENDENT SUBQUERY | wsBasket | ALL | NULL | NULL | NULL | NULL | 2821 | Using where |
+----+--------------------+----------+------+---------------+------+---------+------+------+----------------------------------------------+

最佳答案

要添加两个明显的索引:一个在basketid上,第二个在productid上:然后重试查询和一个新的EXPLAIN以查看索引是否正在使用

关于mysql - 查询顾客与列出的产品一起购买了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com