Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kích thước tối đa cho một truy vấn SQL Server? Mệnh đề IN? Có một phương pháp tiếp cận tốt hơn không

Mỗi lô SQL phải phù hợp với Giới hạn kích thước hàng loạt:65,536 * Kích thước gói mạng.

Ngoài ra, truy vấn của bạn bị giới hạn bởi các điều kiện thời gian chạy. Nó thường sẽ hết kích thước ngăn xếp vì x IN (a, b, c) không là gì ngoài x =a OR x =b OR x =c tạo ra cây biểu thức tương tự như x =a OR (x =b OR (x =c)), vì vậy nó rất sâu với một số lượng lớn OR. SQL 7 sẽ đạt SO ở khoảng 10k giá trị trong IN, nhưng các ngăn xếp ngày nay sâu hơn nhiều (vì x64), vì vậy nó có thể đi khá sâu.

Cập nhật

Bạn đã tìm thấy bài viết của Erland về chủ đề chuyển danh sách / mảng sang SQL Server. Với SQL 2008, bạn cũng có các Tham số Giá trị Bảng cho phép bạn chuyển toàn bộ DataTable dưới dạng một tham số loại bảng duy nhất và tham gia vào đó.

XML và XPath là một giải pháp khả thi khác:

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. pyodbc.connect () hoạt động nhưng không hoạt động với sqlalchemy.create_engine (). connect ()

  2. Brent Ozar giải thích sự phân mảnh bên trong và bên ngoài của SQL Server

  3. SET DATEFIRST - Đặt Ngày đầu tiên trong tuần trong SQL Server

  4. Sự khác biệt giữa JOIN và INNER JOIN

  5. Lấy tên ngày ngắn trong SQL Server (T-SQL)