数据库:对非索引列

时间:2016-11-10 10:00:03

标签: mysql oracle postgresql indexing sql-order-by

在按排序顺序排列的列上创建索引是否可以提高性能?我需要知道这对于Mysql,Postgresql和Oracle数据库。

E.g查询:

select * from article_comments where article_id = 245 order by date_created desc limit 30;

在article_comments表中,article_id是一个索引字段,而date_created则不是。 如果我们在date_created上创建索引,它是否会提高性能。 表大小约为5-7百万行。

2 个答案:

答案 0 :(得分:2)

  

是否按排序顺序在列上创建索引会有所改进   性能

一般答案是:它取决于许多因素,尤其取决于WHERE子句中使用的条件。

如果您的查询,date_created列上的索引不会因where article_id = 245子句而取消排序操作。

在这种情况下,您需要创建一个多色索引以便跳过排序:

CREATE INDEX somename ON article_comments(article_id, date_created DESC)

答案 1 :(得分:0)

我只能告诉Oracle。是的索引可以使您的排序更快。

在此示例中Function-Based Index for Language-Dependent Sorting Oracle会显示一个意图的索引,以提高ORDER BY操作的效果。

此处显示了有关排序的另一个示例:Full Index Scan