国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

文章評(píng)論表,使用什么方式查詢效率最高?

問題描述

問題場(chǎng)景

app首頁一次性展示100篇文章,每篇文章會(huì)顯示最新3條評(píng)論

方案一

Db::table('article as a')
    ->leftJoin('comment as b', 'a.id', '=', 'b.article_id')
    ->offset(0)
    ->limit(100)
    ->get()
    ->toArray();
然后通過php循環(huán)處理結(jié)果集

方案二

\app\model\Article::with(['comment' => function ($query) use () {
    }])->get()
        ->map(function ($query) {
            $query->setRelation('comment', $query->comment->take(3));
            return $query;
        })
        ->toArray();
上述直接一次性查出

問題?

哪個(gè)方案查詢效率高些?文章表和評(píng)論表都是百萬級(jí)別的。
其中方案二“$query->setRelation('comment', $query->comment->take(3));”,這句是啥意思呢?是不是從數(shù)據(jù)庫中拿出所有的(全表獲?。缓笤俳厝?段?還是已經(jīng)從評(píng)論表中獲取3條了(limit 3)?
大家還有更好的方案沒?

1541 4 0
4個(gè)回答

luohonen

你不會(huì)用模型么? 模型關(guān)聯(lián),模型添加字段

ysxpark

$query->setRelation('comment', $query->comment->take(3));
看樣子應(yīng)該是查了所有,然后再取了三條,你可以看數(shù)據(jù)庫日志確認(rèn)下

PHP甩JAVA一條街

一對(duì)多關(guān)系,通俗的來講:首頁顯示100篇文章,每篇文章顯示最新3條評(píng)論
要求速度最快,最優(yōu),效率最高,大家有啥好辦法解決?

  • 暫無評(píng)論
不敗少龍

要的信息存在一張表里,豈不是就沒有關(guān)聯(lián)查詢了

年代過于久遠(yuǎn),無法發(fā)表回答
??