Thi*_*Roy 17 sql database oracle primary-key
对于所有DBA来说,这是一个基本的简单问题.
当我选择时,是否始终保证我的结果将由主键排序,或者我应该用'order by'指定它?
我正在使用Oracle作为我的数据库.
Bob*_*toe 44
不,如果您不使用"order by",则无法保证任何订购.实际上,您无法保证从一个查询到下一个查询的排序将是相同的.请记住,SQL以基于集合的方式处理数据.现在,一个或多个数据库实现可能会以某种方式提供排序,但您永远不应该依赖它.
当我选择时,是否始终保证我的结果将由主键排序,或者我应该用'order by'指定它?
不,到目前为止还没有保证.
SELECT  *
FROM    table
最可能使用的TABLE SCAN根本不使用主键.
您可以使用提示:
SELECT  /*+ INDEX(pk_index_name) */
        *
FROM    table
,但即使在这种情况下,也不保证排序:如果使用Enterprise Edition,查询可以并行化.
这是一个问题,因为ORDER BY不能在SELECT子句子查询中使用,你不能写这样的东西:
SELECT  (
        SELECT  column
        FROM    table
        WHERE   rownum = 1
        ORDER BY
                other_column
        )
FROM    other_table