0
user-people-family-house-home

【Laravel】whereIn is slow or empty data

A quick fix for Laravel’s slow whereInLaravel 使用ORM時,時...

Posted by Roy on 2023-01-07 12:37:28 Views

A quick fix for Laravel’s slow whereIn

Laravel 使用ORM時,時常用到whereIn的function,近期在使用上資料量太龐大造成whereIn進去的array數量很大,直接沒有顯示資料出來。後來查了資料發現是Eloquent 會使用PDO::prepare()在他這邊,db(mySQL, mariaDB)有一個in_predicate_conversion_threshold專門優化IN()子句的變量命名。默認情況下,該值為1000,這意味著查詢將轉換為暗示子查詢的優化版本。因此,在 IN 子句中綁定超過 999 個項目會導致錯誤,數據庫將返回 0 個結果而不會出錯。

解決方式

使用whereIntegerInRaw確保array直都是整數。

Entity::whereIntegerInRaw('id', $array)->get();

View Comments