Mengoptimumkan Pertanyaan Pelayan SQL dengan Klausa IN Besar
Prestasi pertanyaan SQL Server dipengaruhi dengan ketara oleh beberapa faktor, termasuk saiz klausa IN
. Memahami batasan ini dan menggunakan amalan terbaik adalah penting untuk operasi pangkalan data yang cekap.
Had Saiz Pertanyaan Pelayan SQL
Saiz maksimum kumpulan SQL ditentukan oleh formula: 65,536 * Saiz Paket Rangkaian. Melebihi had ini akan menyebabkan kegagalan pertanyaan.
IN
Pertimbangan Saiz Klausa
Walaupun tiada had keras pada bilangan nilai dalam klausa IN
dalam versi SQL Server moden, klausa yang terlalu besar boleh menjejaskan prestasi dengan teruk. Versi SQL Server yang lebih lama (seperti SQL 7) mempunyai had praktikal sekitar 10,000 nilai disebabkan oleh kekangan saiz tindanan. Walau bagaimanapun, versi semasa mengendalikan set yang lebih besar, walaupun kemerosotan prestasi masih berlaku dengan jumlah yang sangat besar.
Alternatif Berprestasi Tinggi kepada Klausa IN
Besar
Untuk pertanyaan yang memerlukan sejumlah besar nilai dalam klausa IN
, pertimbangkan alternatif yang cekap ini:
Parameter Bernilai Jadual (TVP) (SQL Server 2008 dan kemudian): TVP membenarkan anda menghantar jadual nilai sebagai parameter tunggal. Ini meningkatkan prestasi dengan ketara berbanding senarai IN
yang panjang dengan mendayakan gabungan yang cekap.
XML dan XQuery: Wakili senarai nilai anda (cth., GUID) sebagai dokumen XML. Kemudian, gunakan XQuery untuk menyertai data XML dengan jadual anda, menawarkan penyelesaian yang mantap untuk mengendalikan set data yang besar.
Untuk senario yang melibatkan gabungan berdasarkan 1000 GUID, menggunakan sama ada TVP atau XML/XQuery disyorkan untuk mengekalkan prestasi pertanyaan yang optimum. Pilihan terbaik bergantung pada keperluan aplikasi khusus anda dan persekitaran pangkalan data.
Atas ialah kandungan terperinci Apakah Had dan Amalan Terbaik untuk Menggunakan Klausa IN dalam Pertanyaan SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!