1 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
優(yōu)化的第一條規(guī)則(在我看來(lái)),
切勿在循環(huán)內(nèi)運(yùn)行查詢。
在循環(huán)開始之前:
// Fetch all data at once and use select() whenever possible
$LkpAnswers = LkpAnswer::whereIn('id', collect($answers)->pluck('lkp_answer_id')->toArray())->select('name')->get();
在你的其他條件下(在第二個(gè)循環(huán)內(nèi))做這樣的事情。
// Before, this query was inside 2 for loops (n^2). For every n, there's 1 query.
// This right here is a Collection of LkpAnswer::model. Collection is very useful for optimization
$name = $LkpAnswers->where('id', $answer['lkp_answer_id'])->pluck('name')->toArray();
使用它并更改您的第二個(gè) else 條件。僅通過(guò)這樣做,您將減少近 50% 的運(yùn)行時(shí)間。另請(qǐng)查看有關(guān)如何在 laravel 中進(jìn)行優(yōu)化的答案。它討論了緩存、索引、select()和類型轉(zhuǎn)換。
讓我在下面的評(píng)論中發(fā)布。
- 1 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報(bào)