针对 MySQL 查询的优化 - 获取 PHP


<?php function ss($s1, $s2, $s3, $s4, $s5, $s6) {
  $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
  $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
  $sayiArraySql = join(',',$sayiArray);  
  $query = mysql_query("select * from loto where 
                                  s1 in ($sayiArraySql) or
                                  s2 in ($sayiArraySql) or
                                  s3 in ($sayiArraySql) or
                                  s4 in ($sayiArraySql) or
                                  s5 in ($sayiArraySql) or
                                  s6 in ($sayiArraySql)");
  while ($record = mysql_fetch_array($query)) {
      $controlArray = array($record["s1"],$record["s2"],$record["s3"],$record["s4"],$record["s5"],$record["s6"]);
      $diffArray = array_diff($sayiArray,$controlArray);
      if (count($diffArray) == 0)
          $sonucArray["alti"]++;
      else if (count($diffArray) == 1)
          $sonucArray["bes"]++;
      else if (count($diffArray) == 2)
          $sonucArray["dort"]++;
      else if (count($diffArray) == 3)
          $sonucArray["uc"]++;
      else if (count($diffArray) == 4)
          $sonucArray["iki"]++;      
  }
  return $sonucArray;
}

mysql_fetch_array; 使用太多的 CPU 而且速度不快!

"S1-S2-S3-S4-S5-S6"是整数。

相反,代码应该是什么?我知道php是不够的。有人建议我"mysql_fetch_row",但我无法通过改编来写信

我应该怎么做?

使用 mysql_fetch_row 的函数:

<?php 
function ss($s1, $s2, $s3, $s4, $s5, $s6) 
{
    $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
    $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
    $sayiArraySql = join(',',$sayiArray);  
    $query = mysql_query("select s1, s2, s3, s4, s5, s6 from loto where 
                              s1 in ($sayiArraySql) or
                              s2 in ($sayiArraySql) or
                              s3 in ($sayiArraySql) or
                              s4 in ($sayiArraySql) or
                              s5 in ($sayiArraySql) or
                              s6 in ($sayiArraySql)");
    while ($record = mysql_fetch_row($query)) 
    {
        $controlArray = array($record[0],$record[1],$record[2],$record[3],$record[4],$record[5]);
        $diffArray = array_diff($sayiArray,$controlArray);
        if (count($diffArray) == 0)
            $sonucArray["alti"]++;
        else if (count($diffArray) == 1)
            $sonucArray["bes"]++;
        else if (count($diffArray) == 2)
            $sonucArray["dort"]++;
        else if (count($diffArray) == 3)
            $sonucArray["uc"]++;
        else if (count($diffArray) == 4)
            $sonucArray["iki"]++;      
    }
    return $sonucArray;
}

mysql_fetch_row只是使用整数而不是字段名称作为返回数组中的索引。 $record[0] 将根据您的 SQL 请求成为行中的第一个字段。这就是为什么我在请求中写下每个字段名称而不仅仅是 *,以确保顺序对应。

希望有帮助。

最新更新