24

postgresデータベースの1つからプルするためにworldshipをセットアップする必要があります。パッケージがIDでソートされるようにする必要があります。ワールドシップにorderby句を送信させる方法がないので(私が知っている)、返されるレコードのデフォルトをidで返す必要があります。

2番目のメモでは、postgresのデフォルトがレコードが最後に変更されたときのようにソートされているかわかりません。したがって、2つのレコードID 1,2を書き込んだ場合、クエリを実行するとレコード2が変更され、レコード2が返されます。最初であること。

4

4 に答える 4

45

order by句を追加しない限り、行はSQL仕様に従って指定されていない順序で返されます。Postgresでは、これは、基本的に、ライブ行がディスク上で読み取る順序で行を取得することを意味します。

order by句を追加せずに一貫した順序が必要な場合は、Jackのコメントで提案されているようにビューを作成します。

于 2011-07-05T16:43:32.083 に答える
10

「デフォルトのソート」のようなものはありません。テーブルの行は並べ替えられません。

(Jack Maneyによって提案されたように)ビューでこれを偽造することができます。返される行の順序に影響を与える方法はありません。

ただし、これを行う場合は、そのビューに基づいてSELECTにORDER BYを追加すると、データが2回ソートされることに注意してください。

もう1つのオプションは、そのテーブルでCLUSTERコマンドを実行して、必要列に従ってディスク上の行を物理的に並べ替えることです。ただし、このシルは 、行がこの順序で返されることを保証するものではありません。平野でもありませんSELECT * FROM your_table(しかし、その可能性はかなり高いです)。CLUSTERコマンドによって作成された順序は自動的に維持されないため、このステートメントを定期的に再実行する必要があります。

于 2011-07-05T16:44:54.067 に答える
8

価値はあるかもしれませんが、おそらくそれほど多くはありませんが、PostgreSQLの「デフォルト」の順序は、レコードが最後に更新された時刻に基づいています。最近更新されたレコードが最後に表示されます。

于 2020-04-30T12:34:18.797 に答える
-1

最終的には、並べ替えられたインデックスを使用できます。これにより、クエリプランがインデックスにヒットした場合、または強制した場合に、取得された行の順序が保証されますが、このアプローチは遠回りではありません:)。ORDER BY節はすでに述べたように行く方法です。

于 2013-04-29T14:52:08.467 に答える