2011-05-25 93 views

回答

7

WHERE条件可能不会受到影响,但ORDER BY绝对是影响

PostgreSQL Index Ordering Documentation

+0

与链接尚未发行版本的文档是什么? – 2011-05-25 21:27:43

+2

这是一个重要的位:*一个重要的特例是ORDER BY与LIMIT n的组合:显式排序将必须处理所有数据以识别前n行,但是如果存在与ORDER BY匹配的索引,则前n行可以直接检索,而根本不扫描其余部分。* – Mel 2011-05-25 21:31:39

+0

@Milen A. Radev感谢您指出它,修正指向已发布版本。我认为谷歌可能也会回答OP的问题。 – Kallex 2011-05-25 21:32:12

6

PostgreSQL(或任何其他数据库引擎,就此而言)将以任何一种方式读取您的索引。您将得到索引扫描或反向索引扫描。

问题是当你有多列扫描。在这种情况下:

index on (foo, bar) 

会为foo asc, bar asc工作,以及foo desc, bar desc。在某些数据库上,这在foo desc, bar asc(反向扫描foo,忽略栏)或foo asc, bar desc(扫描foo,忽略栏)上不起作用。

0

降序可以给你一个刺激,如果列(S)包含由“最近”的价值观引用了顺数据 - 日期列,ID列等

一般而言,表/索引将有尽管如此,为了让它有所作为真的很大。

它不会影响返回的东西,只是如何。

相关问题