2013-05-06 58 views
0

我正嘗試從多個來源構建一個聚合的新聞/博客/論壇網站。爲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聚集索引)

    1. periodcally抓取和更新最近的文章(追加與新written_time項)

    2. 潦草和歸檔舊物品(帶附加條目written_time)

  • 巨大的,從高活性新聞/博客/論壇

回答

0

對於空間和時間的原因,數篇量,也最好使用InnoDB表單AUTO_INCREMENT基於主鍵,爲的InnoDB存儲主所有其他指標中的KEY值。