[pgsql-jp: 40848] 順番が一定しない
H.Nakai
nakai @ shinko.co.jp
2011年 7月 4日 (月) 12:45:10 JST
中井です。
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 @ shinko.co.jp FAX:026-263-4562 =-=-=-=-
pgsql-jp メーリングリストの案内