Này, tôi phải sử dụng điều kiện IN trong câu lệnh MySQL của mình với một tập hợp lớn các id.
Thí dụ
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Có giới hạn nào nếu các mục mà câu lệnh IN có thể có không?
Này, tôi phải sử dụng điều kiện IN trong câu lệnh MySQL của mình với một tập hợp lớn các id.
Thí dụ
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Có giới hạn nào nếu các mục mà câu lệnh IN có thể có không?
Câu trả lời:
Không, không có, hãy kiểm tra hướng dẫn sử dụng về chức năng IN :
Số lượng giá trị trong
IN
danh sách chỉ bị giới hạn bởi giá trị max_allowed_packet .
where id IN (14000 ids)
, nó sẽ hoạt động cho đến khi truy vấn cập nhật nhỏ hơn 64MB (đó là giá trị mặc định), phải không?
IN
Từ khóa không có bất kỳ giới hạn tích hợp nào, tuy nhiên, có thể có các giới hạn khác như giới hạn max_allowed_packet
có thể gián tiếp giới hạn số lượng giá trị. Nếu bạn đặt giá trị này thành 1024 (byte), bạn chỉ có thể sử dụng một số giá trị giới hạn một cách hiệu quả.
Theo như tôi biết trong mysql, không có giới hạn cho các mục trong IN
câu lệnh.
Trong altough oracle, có giới hạn 1000 mục trong IN
câu lệnh.
Nhưng càng có nhiều mục IN
, hiệu suất truy vấn của bạn sẽ chậm lại trừ khi cột đó được lập chỉ mục.