Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按日期时间字段描述的订单还是按主键描述的订单?_Sql_Database_Postgresql_Database Performance - Fatal编程技术网

Sql 按日期时间字段描述的订单还是按主键描述的订单?

Sql 按日期时间字段描述的订单还是按主键描述的订单?,sql,database,postgresql,database-performance,Sql,Database,Postgresql,Database Performance,这应该是一个相当常规的操作:当从DB中的表中检索记录时,我需要按创建日期和时间的降序对它们进行排序。但如果我使用自动递增键,我也可以按键值降序排序 我的问题是:哪一个更好 就性能而言,我知道主键和数据时间字段使用不同类型的指示符,哪一种更有效 它们总是返回相同的结果吗?当达到最大值时,自动递增关键点是否环绕 我认为您应该清楚地识别已排序的列。如果没有,则如果更新一行数据,则可以更改结果顺序PostgreSQL中没有自动增量字段。我想你是指串行,它只是一个带有默认值的整数?还有,是什么让你认为他们

这应该是一个相当常规的操作:当从DB中的表中检索记录时,我需要按创建日期和时间的降序对它们进行排序。但如果我使用自动递增键,我也可以按键值降序排序

我的问题是:哪一个更好

  • 就性能而言,我知道主键和数据时间字段使用不同类型的指示符,哪一种更有效
  • 它们总是返回相同的结果吗?当达到最大值时,自动递增关键点是否环绕

  • 我认为您应该清楚地识别已排序的列。如果没有,则如果更新一行数据,则可以更改结果顺序

    PostgreSQL中没有
    自动增量
    字段。我想你是指
    串行
    ,它只是一个带有默认值的
    整数
    ?还有,是什么让你认为他们使用了不同类型的索引?两者都只是b树索引。如果它是一个
    主键
    ,那么它将是一个
    唯一的
    索引,但它们在结构上是相同的。@CraigRinger串行键环绕吗?这是我需要担心的事情吗?它们不会缠绕在一起。但是,不能保证基于时间戳和生成的键的行顺序是相同的,特别是如果您使用
    当前时间戳
    而不是
    时钟时间戳
    。如果要根据降序创建时间排序,请根据降序创建时间排序,而不是按键排序。