我对工具包的结果计数有这样的输出格式:
$out = array(
'in progress' => 0,
're-testing' => 0,
'rejected' => 0,
'negative' => 0,
'positive' => 0,
'inconclusive' => 0,
'failed' => 0,
'tested' => 0,
'available' => 0,
'total' => 0
);
我实现了一个循环来查询工具包,然后检查结果值中的相关性,如下所示:
$kits = Kit::where('customerId', Auth::id())->get();
foreach ($kits as $kit) {
if($kit->result !== '' && isset($out[$kit->result])){
++$out[$kit->result];
++$out['tested'];
}
if($kit->status == 'accepted' && !$kit->result){
++$out['in progress'];
}
++$out['total'];
}
不幸的是,这个解决方案非常缓慢。你对如何做到这一点有什么建议吗?多谢了。
编辑:因为项目太多,所以很慢。
首先,您使用条件customerid
进行查询,因此向customerid
字段添加索引将大大提高查询性能。
那么您不必计算总数,可以使用count()
。
$out['total'] = Kit::where('customerId', auth()->id())->count();
计算结果组++$out[$kit->result];
的部分可以使用groupby()
完成
$kits = Kit::where('customerId', auth()->id())
->groupBy('result')
->select('result', DB::raw('COUNT(*) as no'))
->get();
然后,对于要计算的每个结果,可以使用firstwhere()
进行查找。
$out['positive'] = $kits->firstWhere('result', 'positive')->no;
$out['negative'] = $kits->firstWhere('result', 'negative')->no;
...
$out['tested']
只是所有计数的总和。
$out['tested'] = $out['positive'] + $out['negative'] +...
并且需要对$OUT['inprogress']
进行另一次查询
$out['in progress'] = Kit::where('customerId', auth()->id())
->where('status', 'accepted')
->whereNotNull('result')
->where('result', '!=', '')
->count();
下面几节介绍在ORM上下文中发出SELECT语句的技术。这主要涉及返回ORM映射对象实例的语句,但也涉及调用传递单个列或列组的窗体。 有关使用SQLAlChemy ORM进行查询的介绍,应参考以下教程之一: SQLAlchemy 1.4/2.0教程 -为 2.0 style 使用 对象关系教程(1.x API) -为 1.x style 用法。 由于SQLAlchemy 1.4代表了从1.x到2.
问题内容: 我有以下查询: 目前,此查询大约需要93分钟才能完成。我想找到使它更快一点的方法。 该表大约有506,000行,其中大约490,000行包含的值,因此我怀疑我是否可以利用此处的任何索引。 该表(未压缩时)中包含约46 gigs的数据,但是该数据的大部分位于名为的文本字段中。我相信简单地加载和卸载许多页面会导致速度下降。一个想法是做一个新表 只是 在和现场,并保持尽可能小。但是,测试该理
我需要将动态查询参数发送到 REST Web 服务 GET 方法[如下所示]。 主机:端口/应用程序?字段1=值1 消费者可以将参数发送到字段和值。每个字段都映射到值。 有了这种类型的要求,我无法在服务器端方法上编写一组有限的 QueryParams。 我在用python和fastapi 谢谢你。
问题内容: 在Windows上运行的某些Java代码中,我正在从磁盘读取一些大的RGB数据块,并希望尽快将其显示在屏幕上。RGB数据是每个通道8位,没有任何alpha。目前,我具有类似以下的代码来创建BufferedImage。 问题在于将其呈现到屏幕的性能非常慢。大约250-300毫秒。我读过,为了获得最佳性能,您需要在与屏幕兼容的BufferedImage中显示。为此,我将从上述方法返回的缓冲
问题内容: 我需要有关从此DataSnapshot结果中获取“消息”对象的帮助 我可以通过获取键值,并且也可以作为对象,这是FireBase自动生成的对象名称。而不是听对象本身。如何使用DataSnapshot成员方法浏览低谷,“发送者”或“消息”并获取其值? 问题答案: 我似乎在为具有多个子项的对象添加值侦听器。我猜这是一个查询,但是如果您在问题中包含代码,那将非常有帮助。但是,在您添加它之前,
问题内容: 有时,我必须重新导入项目的数据,从而将大约360万行读入MySQL表(当前为InnoDB,但实际上我并不局限于此引擎)。事实证明,“加载数据infile …”是最快的解决方案,但它有一个折衷:-当不使用密钥导入时,导入本身需要大约45秒,但是密钥创建需要一定的时间(已经运行了20分钟。)。 )。-使用表上的键进行导入会大大降低导入速度 在表的3个字段上有键,引用了数字字段。有什么办法可