MySQL whereIn 有最大限制嗎?

曉軒發表於2020-03-05

首先我們先覆盤一下出現的場景:

首先我有一張優惠券表 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 協議》,轉載必須註明作者和本文連結

不要輕易放棄。學習成長的路上,我們長路漫漫,只因學無止境

Don't give up easily. On the way of learning and growing up, we have a long way to go, just because there is no end to learning.

相關文章