我正在尝试从多个来源构建一个聚合的新闻/博客/论坛网站。
因为对于written_time 列,大多数查询可能在同一时间段内,所以我正在考虑利用由written_time 排序的聚集索引。
但是因为它不是唯一的,所以我正在考虑使用唯一 id 制作主键,例如:
(written_time, site_id, article_id)
我认为它需要更大的空间,但它比拥有二级索引要好得多。如果我想利用与写入时间接近的查询结果,那么制作这样的集群索引是一种好方法吗?
以下是一些用例场景:
该网站的主页显示最近的汇总文章
例如
SELECT .. FROM written_time >= datetime_1weeksago
用户可以查看每个版块特定时间段的文章
例如
SELECT .. FROM written_time >= datetime1 AND written_time < datetime2
用户可以看到特定时间段包含特定关键词的文章(如201207),用户可以将搜索条件缩小到一些选定的站点,搜索量不高,打算使用全文引擎,频繁的搜索结果按关键词缓存*time_chunk。
例如
SELECT .. FROM written_time >= '2012-07-01' AND written_time < '2012-08-01' + keyword search using full-text engine
例如
SELECT .. FROM written_time >= '2012-07-01' AND written_time < '2012-08-01' AND site_id IN (1,3,5,7,9) + keyword search using full-text engine
后台爬虫以两种方式获取大量文章并在两个方向上追加:(这就是为什么我想用written_time做聚集索引的原因)
定期抓取和更新最近的文章(附加新的written_time的条目)
潦草和归档旧文章(附加带有written_time的条目)
来自大量高度活跃的新闻/博客/论坛的大量文章