Mengapa PostgreSQL Mengembalikan Data Tidak Tertib Selepas Kemas Kini Baris?

Susan Sarandon
Lepaskan: 2024-11-01 13:08:02
asal
517 orang telah melayarinya

Why Does PostgreSQL Return Unordered Data After Row Updates?

Mengapa PostgreSQL Mengembalikan Data Tidak Tertib Selepas Kemas Kini Baris?

Apabila menanyakan pangkalan data tanpa menyatakan pesanan eksplisit, adalah perkara biasa untuk mengharapkan keputusan dikembalikan secara konsisten pesanan. Walau bagaimanapun, dalam PostgreSQL, kemas kini pada baris secara tidak dijangka boleh mengubah susunan keputusan.

Dalam contoh yang diberikan:

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)
Salin selepas log masuk

Sebelum kemas kini, baris telah dipesan mengikut ID. Walau bagaimanapun, selepas mengemas kini baris dengan nama yang dilepaskan, susunan keputusan berubah. Ini boleh mengelirukan dan boleh membawa kepada hasil yang tidak dijangka.

Pemesanan Lalai dalam PostgreSQL

Apabila klausa ORDER BY tidak dinyatakan dalam pertanyaan SELECT, PostgreSQL menggunakan susunan dalaman yang tidak ditentukan untuk baris yang dikembalikan . Penyusunan ini adalah berdasarkan faktor seperti baris pesanan disimpan pada cakera, susunan bacaan halaman dan penggunaan indeks.

Kepentingan Pesanan Eksplisit

Adalah penting untuk mengelak daripada bergantung pada pesanan lalai Keputusan PostgreSQL. Tingkah laku ini tidak dapat diramalkan dan boleh berubah berdasarkan pelbagai faktor. Atas sebab ini, sentiasa nyatakan klausa ORDER BY dalam pertanyaan anda untuk memastikan pesanan hasil yang konsisten dan boleh diramal.

Atas ialah kandungan terperinci Mengapa PostgreSQL Mengembalikan Data Tidak Tertib Selepas Kemas Kini Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!