比如说一般的新闻系统,每一条新闻都有相应的点击率,或者其他一些评价的数据,如顶的数据,踩的数据等,这些数据都是需要频繁的更新的,不知道大家设计这些是怎么来设计的。是把这些数据跟新闻的常用字段如标题,内容等都在同一个数据表中呢,还是另外创建一个表进行关联,专门用来保存相应的数据。
我现在有一个系统就是分开用二个表进行存储的,到时候也是想为了提高性能,还特意把类似于这些的统计表放在另外一个库中,这下问题来了,当我要针对这些数据进行一些排序查询时,因为不是同一个数据库中,导致关联查询很困难,只能先在一个表中根据需要排序查询,再从另外一个表中读取相应的显示数据,感觉这样一来,性能反而更差了。
不知道以上的表述,大家看不看得清楚。希望大家都谈谈自己实际开发中是怎么来设计的?
你要联合查询排序的话,用视图就好,这样性能、灵活度、完整性都可以兼顾了。
不过我觉得把访问量、支持数等数据独立为一个表并不好
首先它与文章表是1对1关系,一般来说1对1关系就是没有必要划分的表
再者你在浏览文章时肯定要显示这些数据,那么你就需要用一个文章ID分别从两个表取回相关联数据,这样对性能肯定是有损耗吧。
而且拆表对更新的优化应该也微乎其微。
所以我觉得还是就放在一个表里比较好。
我的意见是:
1.分表,将顶和踩的数据放在单独的表中,使用外键连接
2.避免表连接查询,即查询新闻主题的时候并不加载顶和踩的数据
3.延迟加载,如用AJAX在显示主题之后再次加载顶和踩的数据并显示,期间用GIF动画提示用户稍等