使用索引在postgresql中按字母顺序排序。

时间:2017-05-05 12:39:41

标签: sql postgresql indexing

我有一个超过100000行的表,我想使用姓氏和名称按字母顺序对它们进行排序。我想通过使用索引来实现排序。我试过这个:

CREATE INDEX idx0 ON "People"(surname,name DESC NULLS LAST);

但是表格没有正确排序。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果要按此顺序从表中选择数据,则应执行查询:

SELECT * FROM People ORDER BY surname, name DESC NULLS LAST

此查询将快速运行,因为数据库将使用索引而不是动态排序数据(请注意,只有当查询的ORDER BY的列和排序方向与列和索引的排序方向完全匹配时,它才有效)。

如果要在物理上对表中的数据重新排序,则可以执行:

CLUSTER People USING idx0

但请记住,CLUSTER命令只会重新排序现有数据。如果您将新数据插入表中,它将不会按所需顺序放置,因此您必须再次执行CLUSTER命令。