新闻文章数据库 - 我应该在date_publish字段上使用索引来获得更快的SELECTS

时间:2012-02-09 15:42:28

标签: mysql database indexing

需要一些关于如何针对读取操作优化我的文章表的建议。我有文章表,我存储文章编辑写。要求编辑人员可以输入将来设置了date_publish的文章。在publish_date实际到来之前,这些文章无法在封面页中显示。

所以我的问题是,我应该在date_publish字段上有一个索引以获得更好的性能吗?我正在使用MySQL databaseInnoDB引擎。我将日期unixtimestamps存储在unsigned INT(11)字段中。

当我为封面页面的列表文章阅读时,我会做这样的事情:

SELECT articles.* FROM articles WHERE date_publish < $time

1 个答案:

答案 0 :(得分:1)

在列date_publish上添加索引将优化以下简单查询:

SELECT * FROM articles WHERE date_publish < $time

但是,如果更改查询(例如添加ORDER子句以按date_publish以外的列排序,则可能需要复合(多列)索引来优化查询。

修改

为了能够充分利用索引,“覆盖”索引必须包括WHEREJOINORDER子句中的所有列,通常按此顺序排列。因此,如果date_publish和WHERE article_name上的ORDER BY子句中有一个范围,那么您可能希望在两个列(date_publish,article_name)上编制索引。这样MySQL可以使用索引进行选择和排序。