Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何优化此sql查询?_Php_Mysql_Sql Optimization - Fatal编程技术网

Php 如何优化此sql查询?

Php 如何优化此sql查询?,php,mysql,sql-optimization,Php,Mysql,Sql Optimization,我有45个查询,每个查询都会更新表中的一个值。该值取自数组$doffics\u results,例如$doffics\u results['1']如果列tahmin的值等于1,则保存该值,依此类推: $GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[1], timestamp = timestamp where match_id= $match_id AND tahmin = 1"); $

我有45个查询,每个查询都会更新表中的一个值。该值取自数组
$doffics\u results
,例如
$doffics\u results['1']
如果列
tahmin
的值等于1,则保存该值,依此类推:

$GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[1], timestamp = timestamp where match_id= $match_id AND tahmin = 1");
    $GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[2], timestamp = timestamp where match_id= $match_id AND tahmin = 2");
    $GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[3], timestamp = timestamp where match_id= $match_id AND tahmin = 3");
    $GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[4], timestamp = timestamp where match_id= $match_id AND tahmin = 4");
    $GLOBALS['db']->query("UPDATE odds_tahminler SET result = $odds_results[5], timestamp = timestamp where match_id= $match_id AND tahmin = 5");

我有45个查询,每5分钟在cron作业的同一页中执行一次,这使得我的CPU使用率约为77%。这正在杀死我的网络服务器。有没有办法解决这个问题,因为我对MySQL查询不是很熟悉?还有什么方法可以优化它以减少CPU的使用吗?

您是否有
match\u id
tahmin
上的索引?您可以从不直接将PHP变量注入查询字符串开始。您很容易受到SQL注入攻击。@GordonM这些值在插入queries@BaselShbeb这是一个开始,但无论你有什么解决方案,可能都不是完美无缺的。将字符串替换为预先准备好的语句以提供额外的安全网,这将是一个非常好的主意。