我正嘗試從多個來源構建一個聚合的新聞/博客/論壇網站。爲MySQL InnoDB聚集索引使用組合主鍵是否好?
因爲大多數查詢都可能在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聚集索引)
periodcally抓取和更新最近的文章(追加與新written_time項)
潦草和歸檔舊物品(帶附加條目written_time)
巨大的,從高活性新聞/博客/論壇