欢迎,
我需要一些建议来提高我的 Web 应用程序的性能。
一开始我有这样的数据库结构:
用户
-id(主键)
-姓名
-密码
-电子邮件 ....
轮廓
-user 主键、外键 (USER)
-生日
-地区
-照片文件...
页数
-id(主键)
-user 外键(USER)
-页
-日期
注释
-id(主键)
-user 外键(USER)
-page 外键(PAGE)
-评论
-日期
FAVOURITES_PAGES
-id(主键)
-user 外键(USER)
-favourite_page 外键(PAGE)
-日期
但是现在网站最重要的页面之一是观察站,每个人都可以观察其他用户的活动。所以我需要选择一些用户的所有页面、评论和收藏页面并将其显示在一个列表中,按日期排序。
为了获得更好的性能(我认为),我将结构更改为:
table USER and PROFILE without changes
ACTIVITY (additional table- have common fields: user,date)
-id (Primary Key)
-user Foreign Key(USER)
-date
-page Foreign Key(PAGE)
-comment Foreign Key(COMMENTS)
-favourite_page Foreign Key(FAVOURITES_PAGES)
PAGES
-id (Primary Key)
-page
COMMENTS
-id (Primary Key)
-page Foreign Key(PAGE)
-comment
FAVOURITES_PAGES
-id (Primary Key)
-favourite_page Foreign Key(PAGE)
所以现在很容易从所有表中获取排序记录。但我在 ACTIVITY 表中不仅有 PAGES、COMMENTS 和 FAVOURITES_PAGES 的外键 - 大约有十个外键字段,在一条记录中只有一个有值,其他没有:
ACTIVITY
id user date page comment ...
1 2 2010-02-23 None 1
2 1 2010-02-21 1 None
....
这是正确的解决方案。当我在一页(分页)中显示大约 40 条记录时,我必须等待大约一秒钟,但数据库几乎是空的(一些用户和其他表中的大约 100 条记录)。这取决于每页记录的数量 - 我已经检查过了,但为什么需要很长时间,因为关系?
该网站是用 Python/Django 构建的。
有什么建议/意见吗?