我的问题如下:
我有两个长度相同的数组$first
和$second
,包含字符串。每个字符串在名为Fullhandvalues
的表中都给出了正值:
Field: board : string(7) PRIMARY KEY
Field: value : int (11)
我想计算$ first [$ i]的价值比$ second [$ i]多少倍,它们有多少次具有相同价值,以及$ first [$ i]多少次更糟糕价值超过$ $ [$ i]。
我现在所做的是通过
获取所有值$values[0]= DB::table('Fullhandvalues')->where_in("board",$first)->get(Array("value"));
$values[1]= DB::table('Fullhandvalues')->where_in("board",$second)->get(Array("value"));
然后比较这些值。但这似乎非常缓慢(大约6秒,表格中的数组长度为5000和50000个条目)
非常感谢
编辑:我如何遍历它们:
$win=0;$lose=0;$tie=0;
for($i=0;$i<count($values[0]);$i++)
{
if ($values[0][$i]>$values[1][$i])
$win++;
elseif ($values[0][$i]<$values[1][$i])
$lose++;
else $tie++;
}
答案 0 :(得分:1)
您的问题是where_in
。您基本上构建了一个长度为implode(',', $second)
(加上更改)的查询。这必须首先由Laravel(PHP)生成,然后由您的DBMS进行分析。
此外,生成的查询将使用IN(...)
表达式,已知该表达式在MySQL中很慢。
如果没有关于应用程序的更多信息以及如何选择棋盘ID,您可以选择以下选项:
join
。