PostgreSQL的排序算法主要取决于你使用的排序键是否有索引。如果有索引,那么PostgreSQL会使用索引来加速排序过程。如果没有索引,那么PostgreSQL会使用TPC-H标准的快速排序算法。
如果你有一个非唯一索引,那么在排序时,PostgreSQL仍然可以使用索引来加速排序过程。但是,由于非唯一索引可能包含重复的值,因此在使用索引进行排序时,PostgreSQL可能需要额外的步骤来处理这些重复的值。这可能会导致排序过程的性能降低。
如果你在排序时使用的是唯一索引,那么PostgreSQL可以直接使用索引来加速排序过程,而不需要处理任何重复的值。因此,在这种情况下,排序过程的性能可能会更好。
至于你提到的"cost",我猜你可能是在查看EXPLAIN命令的结果。在PostgreSQL中,"cost"表示执行查询所需的CPU时间。如果你的查询使用了索引来加速排序过程,那么"cost"通常会较低,因为索引可以显著减少CPU的使用。反之,如果你的查询没有使用索引来加速排序过程,那么"cost"可能会较高,因为快速排序算法通常需要更多的CPU时间。