Sql 使用order BY查询的多列索引顺序

Sql 使用order BY查询的多列索引顺序,sql,postgresql,indexing,sql-order-by,Sql,Postgresql,Indexing,Sql Order By,我应该如何为以下查询排序我的多列索引 SELECT * FROM example_table WHERE a=3 AND b=4 AND c=5 ORDER BY d, e; 我假设我想创建一个顺序为a、b、c、d、e的索引: CREATE INDEX example_index ON example_table (a, b, c, d, e); 但是我是否应该将按列排序放在索引的第一位 CREATE INDEX example_index ON exampl

我应该如何为以下查询排序我的多列索引

SELECT * 
FROM example_table 
WHERE a=3 AND b=4 
  AND c=5 ORDER BY d, e;
我假设我想创建一个顺序为a、b、c、d、e的索引:

CREATE INDEX example_index 
    ON example_table (a, b, c, d, e); 
但是我是否应该将按列排序放在索引的第一位

CREATE INDEX example_index 
    ON example_table (d, e, a, b, c);

您需要第一个表单:

CREATE INDEX example_index ON example_table (a, b, c, d, e);

如果必须通过
WHERE
子句过滤器扫描整个索引以查找您感兴趣的行,那么首先按照所需的输出顺序对索引进行排序是没有意义的。

我希望能有所帮助。试着只使用两列来考虑它——比如人名和第二名(假设每个人都有两个名字)。我将给你一个他们所有名字的列表,按他们的第二个名字排序,然后按第一个名字排序,让你找到所有叫
John
的人,并根据他们的姓氏对你的输出进行排序。然后我会给你同样的任务,但给你一个列表,先按名字排序,然后按姓氏排序。你认为这两个列表中哪一个更容易使用?@Damien_The_unsiver,我知道我想比较的栏目。我的问题是,
ORDER BY
列是否应该位于索引列列表中的
WHERE
列之前或之后。如果我给了你我的第一个列表(先是姓氏,然后是名字),并要求你找到所有名为
John
的人,这个列表对你有帮助吗?您必须查看整个列表才能找到所有的
John
s。是的,您在中找到它们的顺序是您想要的输出顺序,但是搜索花费了很长时间。与我的第二个列表(名字然后姓氏)相比,你直接跳到
John
s,然后发现它们都是按姓氏顺序列出的。