データ変更後の PostgreSQL 選択クエリの予測できない行順序
PostgreSQL で ORDER BY 句を指定せずに SELECT クエリを実行すると、結果通常、行はディスク上に物理的に保存されている順序で取得されます。ただし、このデフォルトの順序は、更新や挿入などのデータ変更の実行後に予期せず変更される可能性があります。
次の例を考えてみましょう:
postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 5 | c1 6 | c2 7 | c3 (7 rows) postgres=# update check_user set name = 'c1' where name = 'c1\'; UPDATE 1 postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 6 | c2 7 | c3 5 | c1 (7 rows)
行 5 を更新する前、行は昇順で返されていました。 IDで。ただし、更新操作の後、行 5 の位置が変更され、順序が変わりました。
説明:
この動作は、PostgreSQL の内部処理メカニズムによるものです。データの保存と取得。
結論:
PostgreSQL のデフォルトの順序付け動作により、予期しない結果が生じる可能性があります。一貫した行の順序を保証するには、SELECT クエリで常に明示的な ORDER BY 句を指定します。あるいは、データ変更後に行の順序を一貫させる必要がある場合は、目的の並べ替え列にインデックスを作成できます。
以上がデータを更新すると PostgreSQL の選択クエリの順序が変わるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。