在我的应用程序中,我需要显示所选订户以前付款的日志,除了当前的付款。该日志来自同一个名为 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;
}
是否应该做一个存储过程 而不是在应用程序中写逻辑. 因为存储过程在数据库里面,会更快的运行查询。另一方面,应用程序执行第一个查询,然后检查,然后执行最后的查询,我认为这是一个耗时的方法...?
从sproc中节省的将是额外的往返时间。如果你的服务器是合理的本地服务器,这不太可能是显著的。如果你要发出许多查询来检索一个数据集,那么sproc就很有意义。
Sprocs在以下情况下会有很大的帮助。
1) 你从服务器上抛出大量的数据来计算最终的数据集(节省带宽和解析)。
2)当你有很多查询到服务器的时候,你可以发送一个带有几个参数的函数调用我代替(节省往返时间)。
在这个具体的例子中,看起来你不会节省很多,除非这个函数会被执行很多很多次。