需要一些关于如何针对读取操作优化我的文章表的建议。我有文章表,我存储文章编辑写。要求编辑人员可以输入将来设置了date_publish的文章。在publish_date实际到来之前,这些文章无法在封面页中显示。
所以我的问题是,我应该在date_publish字段上有一个索引以获得更好的性能吗?我正在使用MySQL database
,InnoDB
引擎。我将日期unixtimestamps
存储在unsigned INT(11)
字段中。
当我为封面页面的列表文章阅读时,我会做这样的事情:
SELECT articles.* FROM articles WHERE date_publish < $time
答案 0 :(得分:1)
在列date_publish
上添加索引将优化以下简单查询:
SELECT * FROM articles WHERE date_publish < $time
但是,如果更改查询(例如添加ORDER
子句以按date_publish
以外的列排序,则可能需要复合(多列)索引来优化查询。
修改强>
为了能够充分利用索引,“覆盖”索引必须包括WHERE
,JOIN
和ORDER
子句中的所有列,通常按此顺序排列。因此,如果date_publish和WHERE
article_name上的ORDER BY
子句中有一个范围,那么您可能希望在两个列(date_publish,article_name)上编制索引。这样MySQL可以使用索引进行选择和排序。