Laravel: 多重查询VS存储过程

问题描述 投票:1回答:1

在我的应用程序中,我需要显示所选订户以前付款的日志,除了当前的付款。该日志来自同一个名为 payments.

这是我的代码。

public function _paymentLog($token)
{
    # models
    $Self = new self();

    # fetching subscriber
    $subscriberId = $Self
        ->where('token', $token)
        ->select('subscriber_id')
        ->first()
        ->subscriber_id ?? null;

    if($subscriberId == null)
        return null;

    # returning
    return $Self
        ->where('subscriber_id', $subscriberId)
        ->where('token', '<>', $token)
        ->orderBy('id', 'DESC')
        ->get() ?? null;
}

是否应该做一个存储过程 而不是在应用程序中写逻辑. 因为存储过程在数据库里面,会更快的运行查询。另一方面,应用程序执行第一个查询,然后检查,然后执行最后的查询,我认为这是一个耗时的方法...?

mysql sql stored-procedures multiple
1个回答
1
投票

从sproc中节省的将是额外的往返时间。如果你的服务器是合理的本地服务器,这不太可能是显著的。如果你要发出许多查询来检索一个数据集,那么sproc就很有意义。

Sprocs在以下情况下会有很大的帮助。

1) 你从服务器上抛出大量的数据来计算最终的数据集(节省带宽和解析)。

2)当你有很多查询到服务器的时候,你可以发送一个带有几个参数的函数调用我代替(节省往返时间)。

在这个具体的例子中,看起来你不会节省很多,除非这个函数会被执行很多很多次。

© www.soinside.com 2019 - 2024. All rights reserved.