在按排序顺序排列的列上创建索引是否可以提高性能?我需要知道这对于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百万行。
答案 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