2017-08-16 33 views
3

我创建的索引不指定排序或空的姓氏/ 例如为:如何正确地创建一个索引DESC NULLS LAST排序

CREATE INDEX index_name ON TABLE table_name (date) 

,现在我的ORDER BY DESC NULLS LAST查询的运行极为缓慢。

我的PostgreSQL文档阅读,

NULLS FIRST指定在之前那种非空值空值。这是指定DESC时的默认值 。

NULLS LAST指定空值在非空之后排序。当没有指定DESC时,这是默认的 。

因此,如果我像这样创建一个索引(用于COL date):

CREATE INDEX index_name ON TABLE table_name (date DESC NULLS LAST) 

我会得到的查询严重的性能增益像

SELECT * FROM table_name ORDER BY date DESC NULLS LAST LIMIT 50 OFFSET 0 

+1

尝试一下并回报。 –

回答

1

从Postgres的9.6 documentation

中的空白选择,如果你需要支持“空值排序低” 行为,而不是默认的“空值排序高”,在查询该 依赖于指标是有用的避免排序步骤。

如果不提供索引查询规划很可能需要在返回之前的记录,可能导致巨大的性能下降,如果表中包含足够的记录进行排序最后空值。

相关问题