postgreSQLの質問。初心者で質問が変かもしれませんがご容赦を。

クエリーの実行(pg_query(”select * from table”))でorder byでフィールドを指定しなかった場合、pg_fetch_arrayで配列を取得するときにどのような順で行を取得していくのでしょうか。

また、データの追加、更新、削除がない場合は、毎回同じ順で行を取得するのでしょうか。
データの追加、更新、削除を行った場合はどのようになるのでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:k_ahiru No.1

回答回数23ベストアンサー獲得回数0

ポイント30pt

「説明」の第6項目目。

「ORDER BY 句が指定された場合、返される行は指定した順番でソートされます。 ORDER BY が指定されない場合は、システムが計算過程で最初に見付けたものという何らかの順番で行が返されます。 (後述の ORDER BY 句 を参照してください。) 」

とあります。経験上、insert した順番に取得でき、update を行った場合は、update した行が一番最後に並び替えられるようです。

# 通常は、順番が重要な場合は order by を指定するべきです

id:ktoshi

ありがとうございます。

何らかの順番なんですね、、、。順番は重要ではないのですがデータが多いのでLIMITとOFFSETでデータを分けてupdate処理を複数回実行しようと思ってます。

2004/12/18 12:20:37
id:ke_ishi No.2

回答回数269ベストアンサー獲得回数0

ポイント15pt

ORDER BYを指定しない場合、並び順は不定です。順番に意味があるときには、必ず指定しなければなりません。

id:ktoshi

ありがとうございます。

並び順が不定なのは構わないのですが、データの更新があるたびに違う並び順になってしまいそうな感じですね。

2004/12/18 12:33:28
id:ke_ishi No.3

回答回数269ベストアンサー獲得回数0

ポイント15pt

経験上、INSERT・UPDATE・DELETEをせず、INDEXの再構築などもしない間は同じ順番でSELECTされているような「気が」します。

しかし、それを保証はしません。

id:ktoshi

ORDER BYの指定は必須のようですね。

どうもありがとうございました。

2004/12/19 23:09:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません