我有一个超过100000行的表,我想使用姓氏和名称按字母顺序对它们进行排序。我想通过使用索引来实现排序。我试过这个:
CREATE INDEX idx0 ON "People"(surname,name DESC NULLS LAST);
但是表格没有正确排序。我做错了什么?
答案 0 :(得分:0)
如果要按此顺序从表中选择数据,则应执行查询:
SELECT * FROM People ORDER BY surname, name DESC NULLS LAST
此查询将快速运行,因为数据库将使用索引而不是动态排序数据(请注意,只有当查询的ORDER BY的列和排序方向与列和索引的排序方向完全匹配时,它才有效)。
如果要在物理上对表中的数据重新排序,则可以执行:
CLUSTER People USING idx0
但请记住,CLUSTER
命令只会重新排序现有数据。如果您将新数据插入表中,它将不会按所需顺序放置,因此您必须再次执行CLUSTER
命令。