如果我的表中包含以前购买产品的产品,请执行以下操作:
In [3]: h.transmat_
Out[3]:
array([[ 0.19077231, 0.11117929, 0.24660208, 0.20051377, 0.25093255],
[ 0.12289066, 0.17658589, 0.24874935, 0.24655888, 0.20521522],
[ 0.15713787, 0.13912972, 0.25004413, 0.22287976, 0.23080852],
[ 0.14199694, 0.15423031, 0.25024992, 0.2332739 , 0.22024893],
[ 0.17321093, 0.12500688, 0.24880728, 0.21205912, 0.2409158 ]])
正如您在上面的示例中所看到的,用户ID | ProductName | UserID
1 | Grapes | 3455
2 | Water | 1944
3 | Bread | 3455
4 | Milk | 3455
...
已经购买了葡萄,面包和牛奶。如果我想要检索用户购买的所有产品,我必须找到具有用户3455
的每条记录。
存储来自用户3455
的所有产品会加快搜索这些记录,例如对硬盘进行碎片整理吗?如果是这样,删除旧记录并将其读取到数据库末尾的过程是否会浪费处理能力?
答案 0 :(得分:1)
获取所需信息的最快方法是在t(UserId, ProductName)
上建立索引。这是以下查询的覆盖索引:
select ProductName
from t
where UserId = 3455;
这意味着查询所需的所有列都在索引中,并且顺序正确。因此,查询优化器可以仅使用索引来解析查询。这应该很快。