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

3個表通過join來查詢會很慢,有更好的辦法么?

wocall

問題描述

1個game游戲表,里面有g(shù)ameid
1個group表,里面是參加游戲的人,同一gameid對應(yīng)多條具有userid的記錄
1個friend表,里面每一條關(guān)注記錄,有userid和fuserid

要求檢索的結(jié)果是,列出只有我關(guān)注的fuserid(group的userid)參加的game列表。同一條gameid可能有多個我關(guān)注的人,只需要列出一條。

加了翻頁模式,每次只挑10條。

如圖:

$games = Db::table('game')
                    ->join('course', 'game.courseid', '=', 'course.courseid')
                    ->join('game_group_user', 'game_group_user.gameid', '=', 'game.gameid')
                    ->join('friend', 'game_group_user.userid', '=', 'friend.fuserid')
                    ->where('friend.userid', '=', $uid)
                    ->select('game.gameid', 'game.name', 'game.courseid', 'course.name as course', 'game.pre_starttime', 'game.game_group_coverpath as path', 'game.game_group_covername as image', 'game.watchers', 'game.gametype', 'game.teamid', 'game.is_have_gamble')
                    ->orderby('gameid', 'desc')
                    ->distinct()
                    ->offset(($current_page - 1)*$per_page)
                    ->limit($per_page)
                    ->get();

$uid:
傳遞的我的id

數(shù)據(jù)庫:
mysql Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

PHP:
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies

webman:
最新版

現(xiàn)在的情況是,每次加載都感覺比較慢,請將各位大師,有沒有更快的算法
多謝多謝!!

1775 5 1
5個回答

六叔叔

先查group 然后在join friend 、game,然后在看看關(guān)聯(lián)外鍵索引,么有的加一下。

  • wocall 2023-06-24

    非常感謝,按照你的先取出10條group信息,再php循環(huán)出10條game來,速度就飛起來了。。。感謝六叔叔

  • wocall 2023-06-24

    又遇到新問題:(,因為某用戶的friend表數(shù)據(jù)太多,他的速度提高很有限,不知還有何良策?

  • banro512 2023-06-25

    分成2次或3次短查詢,再php里組合,配合redis緩存。

  • 六叔叔 2023-06-25

    不知道具體情況,所以無法給你具體的優(yōu)化,如果是friend數(shù)據(jù)庫量比較大,拆開查詢查下friend 然后limit 1 只查一條看看效果。

  • wocall 2023-06-29

    這三個表數(shù)據(jù)量都不算太小。game100多萬,group340多萬,friend300萬。

chaz6chez

explain

  • 暫無評論
TM

單獨查出來后再in對應(yīng)ID查關(guān)聯(lián)表再遍歷組合會好點嗎

  • 暫無評論
用戶名好難想

可以再加一張結(jié)果表,將你需要的數(shù)據(jù)用定時查詢后放在這里面,后面直接查詢這張表就行了

  • wocall 2023-09-19

    可是,那么多用戶,要給每個用戶建一張表么?

  • 用戶名好難想 2023-09-19

    看數(shù)據(jù)大小,優(yōu)先考慮表分區(qū),如果分區(qū)不能滿足,考慮分區(qū)加分表的方式. 分表表名可以對userid取模后來取

1

其實只需要一個表就可以實現(xiàn)其功能

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