SQL Server 2012: Perubahan Susunan Baris dalam Pertanyaan PILIH
SQL Server 2012 mengubah dengan ketara cara susunan baris dikendalikan dalam SELECT
pernyataan yang tidak mempunyai klausa ORDER BY
yang jelas. Tidak seperti pendahulunya, SQL Server 2008, yang secara tersirat menjamin susunan baris tertentu, SQL Server 2012 tidak menawarkan jaminan sedemikian. Susunan baris yang dikembalikan menjadi tidak dapat diramalkan tanpa klausa ORDER BY
.
Kesan pada Aplikasi Sedia Ada
Perubahan ini secara langsung memberi kesan kepada aplikasi yang bergantung pada susunan baris yang konsisten. Contohnya, lebih 2500 prosedur tersimpan merentas 5 pangkalan data memerlukan kemas kini untuk mengekalkan hasil yang boleh diramal.
Penyelesaian
1. Laksanakan ORDER BY
Klausa:
Penyelesaian yang disyorkan ialah menambah klausa ORDER BY
yang sesuai kepada semua prosedur tersimpan yang terjejas. Walaupun intensif buruh, ini menjamin susunan baris yang konsisten dan menghalang hasil pertanyaan yang tidak dijangka.
2. Menurunkan taraf (Tidak Disyorkan):
Berbalik kepada SQL Server 2008 memulihkan pesanan tersirat sebelumnya. Walau bagaimanapun, ini amat tidak digalakkan kerana kerumitan dan potensi isu sokongan yang terlibat.
SQL, Teori Set dan Susunan Baris
Kekurangan susunan baris SQL yang wujud berpunca daripada asasnya dalam teori set. Set, mengikut definisi, tidak mempunyai susunan yang wujud. Oleh itu, susunan baris dalam set hasil SQL adalah, pada asasnya, sewenang-wenangnya.
Gelagat Sejarah dan Amalan Terbaik Semasa SQL Server
Walaupun versi SQL Server sebelumnya kadangkala menyiratkan pesanan, ini tidak berdokumen dan tidak boleh dipercayai. Banyak catatan blog dan nasihat pakar berhati-hati daripada bergantung pada tingkah laku tersirat ini. Pasukan pengoptimum pertanyaan telah menasihatkan secara eksplisit menentangnya.
Kesimpulan
Peralihan dalam gelagat susunan baris dalam SQL Server 2012 memerlukan penggunaan ORDER BY
klausa dalam semua aplikasi yang memerlukan penjujukan baris yang boleh diramal. Walaupun menuntut usaha yang ketara, ini penting untuk integriti data dan hasil pertanyaan yang konsisten.
Atas ialah kandungan terperinci Bagaimanakah Naik Taraf SQL Server 2012 Mempengaruhi Susunan Baris dalam Pertanyaan PILIH Tanpa ORDER BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!