人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

postgreSQLの質問。初心者で質問が変かもしれませんがご容赦を。
クエリーの実行(pg_query(”select * from table”))でorder byでフィールドを指定しなかった場合、pg_fetch_arrayで配列を取得するときにどのような順で行を取得していくのでしょうか。

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

●質問者: ktoshi
●カテゴリ:コンピュータ
✍キーワード:postgreSQL SELECT クエリ データ フィールド
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● k_ahiru
●30ポイント

http://www.postgresql.jp/document/pg746doc/html/sql-select.h...

「説明」の第6項目目。

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

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

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

◎質問者からの返答

ありがとうございます。

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


2 ● ke_ishi
●15ポイント

http://www.postgresql.jp/document/pg743doc/html/sql-select.h...

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

◎質問者からの返答

ありがとうございます。

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


3 ● ke_ishi
●15ポイント

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/que...

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

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ