首先我們先覆盤一下出現的場景:
首先我有一張優惠券表 coupon
和一張核銷表 write_off_record
,在列表查詢的時候是使用了分頁,所有在執行的使用是沒問題的,但是這裡有個下載功能(目前22w多),這裡就會報錯記憶體溢位
使用場景:
coupon 表
public function reocrd()
{
return $this->hasMany(WriteOffRecord::class);
}
write_off_record 表
public function coupon()
{
return $this->belongsTo(Coupon::class);
}
下載
Coupon::with('reocrd')->get();
注意這裡使用了模型關聯一對多 with(‘reocrd’),這裡就會有 坑 坑 坑, 重要的事情說三遍!
mysql:in是沒有限制的,但是受 max_allowed_packet 預設是4MB,大約2000個之內沒問題
oracle:最多是1000個
mysql --help | grep max-allowed-packet
使用 join
代替 wherein
如果有好的解決辦法請賜教!
原文地址:mysql whereIn有最大限制嗎?
本作品採用《CC 協議》,轉載必須註明作者和本文連結