Rumah > pangkalan data > tutorial mysql > Sekiranya Anda Menggunakan SET NOCOUNT ON dalam SQL Server?

Sekiranya Anda Menggunakan SET NOCOUNT ON dalam SQL Server?

Susan Sarandon
Lepaskan: 2025-01-19 22:56:10
asal
817 orang telah melayarinya

Should You Use SET NOCOUNT ON in SQL Server?

SET NOKAUN HIDUP dalam SQL Server: Tukar ganti

Sama ada hendak menggunakan "SET NOCOUNT ON" dalam SQL Server sentiasa menjadi topik perdebatan di kalangan pembangun. Sesetengah melihatnya sebagai faedah prestasi, sementara yang lain memberi amaran tentang potensi kelemahannya.

Pengetahuan latar belakang

Arahan "SET NOCOUNT ON" menyekat mesej "bilangan baris yang terjejas xx baris" yang muncul selepas operasi DML. Mesej ini ialah set hasil yang mesti diproses oleh pelanggan, yang memerlukan overhed yang remeh tetapi boleh diukur. Dalam senario yang melibatkan pencetus atau prosedur tersimpan, berbilang mesej "baris terjejas xx baris" boleh menyebabkan ralat dengan beberapa ORM, termasuk MS Access dan JPA.

Penyokong SET NOCOUNT ON

Kebijaksanaan konvensional menyatakan bahawa "SET NOCOUNT ON" harus digunakan untuk meningkatkan prestasi. Hujahnya ialah kerana mesej "bilangan baris yang terjejas xx baris" tidak diperlukan untuk kebanyakan aplikasi, menekannya boleh mengurangkan trafik rangkaian dan masa pemprosesan. Selain itu, dipercayai bahawa SET NOCOUNT ON menghalang ralat dalam senario tertentu di mana pelanggan menjangkakan bilangan baris tertentu.

Lawan SET NOCOUNT ON

Penentang "SET NOCOUNT ON" berhujah bahawa ia mungkin menghalang operasi pangkalan data lanjutan. Contohnya, menyekat maklumat kiraan baris mungkin mengganggu:

  • Gunakan JIKA WUJUD untuk mengelakkan rekod pendua
  • Gunakan WHERE NOT EXISTS untuk menghadkan hasil
  • Tapis kemas kini remeh
  • Lakukan akses jadual sebelum atau selepas operasi DML

Selain itu, SET NOCOUNT ON boleh menyebabkan tingkah laku yang tidak dijangka dengan beberapa rangka kerja pelanggan (seperti SqlDataAdapter dan JPA ADO.NET). Rangka kerja ini mengharapkan maklumat kiraan baris, dan ketiadaannya boleh menyebabkan ralat atau hasil yang salah.

Impak prestasi

Walaupun lazimnya dipercayai bahawa SET NOCOUNT ON meningkatkan prestasi, data menunjukkan sebaliknya. Dalam protokol TDS, SET NOCOUNT ON hanya menyimpan 9 bait bagi setiap pertanyaan, manakala arahan itu sendiri ialah 14 bait. Mesej "bilangan baris yang terjejas xx baris" bukanlah paket rangkaian yang berasingan, tetapi struktur terbenam yang kecil. Oleh itu, peningkatan prestasi adalah minimum.

Kesimpulan

Sama ada mahu menggunakan "SET NOCOUNT ON" atau tidak bergantung pada keperluan dan pertimbangan tertentu. Ia boleh berfaedah dalam senario di mana prestasi adalah kritikal atau di mana rangka kerja klien tidak bergantung pada maklumat kiraan baris. Walau bagaimanapun, sebelum melaksanakan SET NOCOUNT ON secara global, pastikan anda mempertimbangkan potensi kelemahannya.

Atas ialah kandungan terperinci Sekiranya Anda Menggunakan SET NOCOUNT ON dalam SQL Server?. 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