这是我要解决的问题的简化版本:
Table1: users
id int(11)
username varchar(30)
Table2: hobbies
id int(11)
user_id int(11)
description varchar(100)
Table3: feedback
id int(11)
user_id int(11)
description varchar(100)
我成功地基于生成并存储下表的函数创建了一个视图:
Table4: user_rank
id int(11)
user_id
hobby int(3)
feedback int(3)
存储如下数据:
id . user_id . hobby feedback
54 . 20 . 30 . 40
67 . 87 . 0 . 0
因此,爱好和反馈是计算得出的字段。如果用户已经完成了兴趣爱好和反馈会话,那么他会得到一个分数,否则该值为零。我的问题是基于视图的方法太慢了,因为我的数据库包含成千上万的用户。还有另一种方法可以实现我的目标吗?
在收到一些反馈后更新:
您好,谢谢您的答复。我之前已经发布了详细的视图。您可以在这里看到它:
MySQL view populated using functios is too slow. Is my design faulty?
由于没有人回答替代方案,我问了一个直接的问题。您将如何创建一个永久表来存储用户的分数(计算得出的字段形成不同的表)而又不不断调用和更新数据?考虑到数据库中存储了成千上万的用户,我正在根据本文顶部给出的表格的简化描述寻求解决方案。