Urutan Baris yang tidak dapat diramalkan dalam PostgreSQL Pilih Pertanyaan Selepas Pengubahsuaian Data
Apabila melaksanakan pertanyaan SELECT tanpa menyatakan klausa ORDER BY dalam PostgreSQL, yang terhasil baris biasanya diambil mengikut susunan ia disimpan secara fizikal pada cakera. Walau bagaimanapun, pesanan lalai ini boleh berubah secara tidak dijangka selepas melakukan pengubahsuaian data seperti kemas kini atau sisipan.
Pertimbangkan contoh berikut:
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)
Sebelum mengemas kini baris 5, baris dikembalikan dalam tertib menaik oleh id. Walau bagaimanapun, selepas operasi kemas kini, kedudukan baris 5 berubah, menghasilkan susunan yang berbeza.
Penjelasan:
Tingkah laku ini disebabkan oleh mekanisme dalaman PostgreSQL untuk pengendalian penyimpanan dan pengambilan data.
Kesimpulan:
Adalah penting untuk ambil perhatian bahawa bergantung pada tingkah laku pesanan lalai dalam PostgreSQL boleh membawa kepada hasil yang tidak dijangka. Untuk memastikan susunan baris yang konsisten, sentiasa nyatakan klausa ORDER BY eksplisit dalam pertanyaan SELECT anda. Sebagai alternatif, jika anda memerlukan susunan baris supaya konsisten selepas pengubahsuaian data, anda boleh membuat indeks pada lajur pengisihan yang diingini.
Atas ialah kandungan terperinci Mengapa PostgreSQL Select Query Order Saya Berubah Selepas Mengemas kini Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!