2012-02-09 47 views
1

需要一些關於如何優化我的文章表以進行讀取操作的建議。我有文章表我在哪裏存儲文章編輯寫。要求編輯人員可以輸入將來設置有date_publish的文章。這些文章不能在封面上隨時顯示,直到publish_date實際到來。新聞文章數據庫 - 我應該使用date_publish字段上的索引來加速選擇

所以我在這裏的問題是我應該有一個在date_publish領域的索引更好的性能?我使用MySQL database,與InnoDB引擎。我在unsigned INT(11)字段中存儲日期爲unixtimestamps

我,當我做出了封面列表文章讀我做這樣的事情:

SELECT articles.* FROM articles WHERE date_publish < $time 

回答

1

在列date_publish添加索引將優化下面這個簡單的查詢:

SELECT * FROM articles WHERE date_publish < $time 

但是,如果更改查詢,例如添加ORDER子句以按date_publish以外的列排序,則可能需要複合(多列)索引來優化查詢。

編輯

爲了能夠充分利用索引,「覆蓋」指標必須包括在WHEREJOINORDER子句中的所有列,通常的順序。因此,如果您在date_publish的WHERE子句中有一個範圍,並且文章名爲ORDER BY,那麼您可能希望在兩列(date_publish,article_name)上編制索引。這樣MySQL可以使用索引進行選擇和排序。

+0

我實際上是用'ORDER'子句讀取的,所以我很好奇你是什麼意思的「多列」索引優化? – 2012-02-09 16:00:30

+0

我正在更新我的答案以進一步解釋。 – 2012-02-09 16:25:21

相關問題