[pgsql-jp: 40851] Re: 順番が一定しない

Itagaki Takahiro itagaki.takahiro @ gmail.com
2011年 7月 4日 (月) 14:43:33 JST


2011/7/4 H.Nakai <nakai @ shinko.co.jp>:
>> ページングをする場合には
>> ORDER BY のキーの末尾に ID を含めてください。
> デフォルトで、IDは追加されない仕様だったと思います。
> 昔は表を作成するとデフォルトでIDがレコードの項目に追加(隠し項目)
> されましたが、現在の仕様では明示しないと追加されなかったと思います。
> それにIDを使うのは作法上、良くないと言われた記憶もあります。

ここでの ID は OID のことではなく、
テーブルごとの主キー (PK) のつもりでした。
# 確かに OID をユーザのテーブルで使うのは非推奨です。

> 論理的にしようがないとも思いますが、一定しないのが気になります。
> 負荷分散のときに、同じ結果を返さないということにもなりそうですね。

たぶんそれは逆で、一定にするために計算コストを払う必要があります。
普通にソートしても、ctid (物理位置) を隠しキーで使っていたりしますし。
Top-N ソートは、そのあたりの動作をあえて「未定義」にすることで、
速度を稼いでいるんだと思いますよ。

-- 
Itagaki Takahiro


pgsql-jp メーリングリストの案内