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

3個(gè)表通過join來查詢會(huì)很慢,有更好的辦法么?

wocall

問題描述

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

要求檢索的結(jié)果是,列出只有我關(guān)注的fuserid(group的userid)參加的game列表。同一條gameid可能有多個(gè)我關(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)在的情況是,每次加載都感覺比較慢,請(qǐng)將各位大師,有沒有更快的算法
多謝多謝?。?/p>

1739 5 1
5個(gè)回答

六叔叔

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

  • wocall 2023-06-24

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

  • wocall 2023-06-24

    又遇到新問題:(,因?yàn)槟秤脩舻膄riend表數(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

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

chaz6chez

explain

  • 暫無評(píng)論
TM

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

  • 暫無評(píng)論
用戶名好難想

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

  • wocall 2023-09-19

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

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

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

1

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

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