2011年7月 4日

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

中井です。

PostgreSQL 8.2.3 から 8.4.5にバージョンアップしたところ
面白い現象に出くわしました。
項目が a, b, c とある表 ggg において、
select a, b, c
from ggg
order by a, b

offset N
limit M;
で抽出するとき、2ページ目で出てくるべき行が出てこないで、1ページ目に
含まれていた行が出てきます。
a, b でソートしていますが、c についてはソートしているわけではない
ので、適当な順番で表示されるのは良いのですが、一定しないのは予想外
でした。

例)
データ ggg
a, b, c
11, 34, 34
11, 33, 12
11, 37, 13
11, 34, 28
検索1
select a, b, c
from ggg
order by a, b
offset 1
limit 2;
検索結果1
11, 33, 12
11, 34, 34
検索2
select a, b, c
from ggg
order by a, b
offset 3
limit 2;
検索結果2
11, 34, 34
11, 37, 13
検索結果2に期待したのは、下記のデータです。
11, 34, 28
11, 37, 13
これは仕様でしょうか?
8.2.3ではこういう現象は(たまたま?)発生しませんでした。
取り敢えず、order by a, b, c で対処しました。
宜しくお願いします。

--
-=-=-=-= SHINKO ELECTRIC INDUSTRIES CO., LTD. =-=-=-=-
=-=-=-=- Research & Development Div. -=-=-=-=
-=-=-=-= Designing Technology Development Dept. =-=-=-=-
=-=-=-=- Name:Hisakazu Nakai TEL:026-263-3922 -=-=-=-=
-=-=-=-= Mail:nakai@xxxxx FAX:026-263-4562 =-=-=-=-


投稿者 xml-rpc : 2011年7月 4日 12:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104862
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。