哪个更快 - `findOneBy()` 或 `countBy()`? [Sf6,教义]

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

我正在使用 Symfony 6 和 Doctrine,我想检查我的数据库中是否存在特定条目。

示例实体

  • id
  • 字段1
  • 字段2

我想检查数据库中是否存在带有

field2='test'
的实体。

什么会更快?为什么?

$value='test';

## countBy()
$count = $repository->countBy(['field2' => $value]);
if($count > 0) { return true;}

## findBy()
$entity = $repository->findOneBy(['field2' => $value]);
if($entity) { return true;}
php performance symfony doctrine
1个回答
0
投票

在 Symfony 6 和 Doctrine 中:

使用 countBy() 根据特定条件快速检查实体是否存在。它很高效,因为它直接计算匹配记录,而不检索完整的实体。

当您在确认实体存在后需要使用实体数据时,请选择 findOneBy()。它获取整个实体,允许访问其属性。然而,由于数据检索,它的效率较低。

为了做出真实的决定,请考虑您的用例:简单的存在检查或数据交互。通过在应用程序中对两种方法进行基准测试来优先考虑性能。

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