Rumah >pangkalan data >tutorial mysql >Bagaimanakah Pesanan Baris Berbeza Antara SQL Server 2008 dan SQL Server 2012 SELECT Queries?
SQL Server 2008 lwn. 2012: PILIH Percanggahan Pesanan Baris Pertanyaan
Masalahnya:
Peningkatan daripada SQL Server 2008 kepada SQL Server 2012 telah mendedahkan perbezaan kritikal: susunan baris lalai dalam pertanyaan SELECT
tanpa klausa ORDER BY
. Walaupun SQL Server 2008 sering mengembalikan baris dalam susunan yang kelihatan konsisten, SQL Server 2012 tidak memberikan jaminan sedemikian.
Kesannya:
Perubahan ini memberi kesan ketara kepada aplikasi yang bergantung pada pesanan tersirat ini, terutamanya memberi kesan kepada lebih 2500 prosedur tersimpan merentas 5 pangkalan data. Penambahan selimut klausa ORDER BY
adalah tidak praktikal. Pembangun sedang mencari penyelesaian yang cekap, malah mempertimbangkan penurunan taraf kepada SQL Server 2008.
Mengapa Pemesanan Eksplisit Adalah Penting:
Menurun taraf tidak disyorkan. Jangkaan susunan baris lalai pada asasnya adalah cacat. SQL beroperasi pada set, dan set sememangnya kekurangan susunan yang wujud. Seperti yang diserlahkan oleh Itzik Ben-Gan dalam "Microsoft SQL Server 2012 T-SQL Fundamentals", hasil pertanyaan tidak tersusun melainkan diisih secara eksplisit.
Ketidakpastian Perintah Tersirat:
Pembangun mesti sentiasa menggunakan klausa ORDER BY
eksplisit. Pengoptimum pertanyaan mungkin menyusun semula operasi untuk prestasi, berpotensi mengubah mana-mana susunan lalai yang dilihat.
Amalan Terbaik untuk Susunan Baris Konsisten:
Untuk memastikan hasil yang boleh diramal:
ORDER BY
dalam SELECT
penyata yang susunan baris adalah berkaitan.ORDER BY
, pesanan mungkin berbeza-beza merentas pelan pertanyaan yang berbeza, terutamanya dengan pelaksanaan selari.Atas ialah kandungan terperinci Bagaimanakah Pesanan Baris Berbeza Antara SQL Server 2008 dan SQL Server 2012 SELECT Queries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!