执行多条耗时的sql,怎么优化?

江船夜雨听笛

问题描述

需要执行5条查询sql,每条sql执行时间为2s,同步的情况需要10s,有什么方案办法能优化一下吗?

随便写了一个demo

    public function test(Request $request)
    {
        $time = time();
        $sqlArr =[
            'select sleep(2);',
            'select sleep(2);',
            'select sleep(2);',
            'select sleep(2);',
            'select sleep(2);',
        ];
        foreach ($sqlArr as $sql){
            Db::select($sql);
        }
       return json(['code' => 0, 'msg' => 'ok','tt'=>time()-$time]);
    }

{
"code": 0,
"msg": "ok",
"tt": 10
}
1133 3 0
3个回答

围猎三锅

协程或者异步吧

Dalong

多条一次执行。

  • 暂无评论
meows

给你两条路:

  1. 你这SQL很耗时,单独开个webman服务去处理,nginx 代理一下即可。
    具体参考:https://www.workerman.net/doc/webman/others/task.html#%E6%96%B0%E5%A2%9EHTTP%E7%AB%AF%E5%8F%A3
  2. 要不就用Swoole Hyperf 去写这个接口。
  • 暂无评论
年代过于久远,无法发表回答
🔝