クエリーの実行(pg_query(”select * from table”))でorder byでフィールドを指定しなかった場合、pg_fetch_arrayで配列を取得するときにどのような順で行を取得していくのでしょうか。
また、データの追加、更新、削除がない場合は、毎回同じ順で行を取得するのでしょうか。
データの追加、更新、削除を行った場合はどのようになるのでしょうか。
「説明」の第6項目目。
「ORDER BY 句が指定された場合、返される行は指定した順番でソートされます。 ORDER BY が指定されない場合は、システムが計算過程で最初に見付けたものという何らかの順番で行が返されます。 (後述の ORDER BY 句 を参照してください。) 」
とあります。経験上、insert した順番に取得でき、update を行った場合は、update した行が一番最後に並び替えられるようです。
# 通常は、順番が重要な場合は order by を指定するべきです
ORDER BYを指定しない場合、並び順は不定です。順番に意味があるときには、必ず指定しなければなりません。
ありがとうございます。
並び順が不定なのは構わないのですが、データの更新があるたびに違う並び順になってしまいそうな感じですね。
経験上、INSERT・UPDATE・DELETEをせず、INDEXの再構築などもしない間は同じ順番でSELECTされているような「気が」します。
しかし、それを保証はしません。
ORDER BYの指定は必須のようですね。
どうもありがとうございました。
ありがとうございます。
何らかの順番なんですね、、、。順番は重要ではないのですがデータが多いのでLIMITとOFFSETでデータを分けてupdate処理を複数回実行しようと思ってます。