Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ukuran maksimum untuk Kueri SQL Server? klausa IN? Apakah ada Pendekatan yang Lebih Baik?

Setiap kumpulan SQL harus sesuai dengan Batas Ukuran Batch:65.536 * Ukuran Paket Jaringan.

Selain itu, kueri Anda dibatasi oleh kondisi waktu proses. Biasanya akan kehabisan ukuran tumpukan karena x IN (a,b,c) tidak lain adalah x=a OR x=b OR x=c yang membuat pohon ekspresi yang mirip dengan x=a OR (x=b OR (x =c)), sehingga menjadi sangat dalam dengan jumlah OR yang banyak. SQL 7 akan mencapai SO sekitar 10k nilai di IN, tetapi saat ini tumpukan jauh lebih dalam (karena x64), sehingga bisa masuk cukup dalam.

Perbarui

Anda sudah menemukan artikel Erland tentang topik meneruskan daftar/array ke SQL Server. Dengan SQL 2008 Anda juga memiliki Parameter Bernilai Tabel yang memungkinkan Anda melewatkan seluruh DataTable sebagai parameter tipe tabel tunggal dan bergabung di dalamnya.

XML dan XPath adalah solusi lain yang layak:

SELECT ...
FROM Table
JOIN (
   SELECT x.value(N'.',N'uniqueidentifier') as guid
   FROM @values.nodes(N'/guids/guid') t(x)) as guids
 ON Table.guid = guids.guid;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan COLUMNPROPERTY() untuk Mengembalikan Kolom atau Informasi Parameter di SQL Server

  2. Apakah Anda Menggunakan Alat Pemantauan Kinerja Basis Data yang Tepat?

  3. Apa itu SQL Server? (Definisi, Versi, Edisi)

  4. Kesalahan dalam SQL Server saat mengimpor file CSV meskipun varchar(MAX) digunakan untuk setiap kolom

  5. Kembalikan Semua Baris Dari Partisi Tertentu di SQL Server (T-SQL)