900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql得花多少钱 php-我需要帮助来解决为什么mySQL查询花费比...

mysql得花多少钱 php-我需要帮助来解决为什么mySQL查询花费比...

时间:2023-09-01 19:40:41

相关推荐

mysql得花多少钱 php-我需要帮助来解决为什么mySQL查询花费比...

我正在排查为什么php脚本需要花费这么长时间才能运行并且有时会超时的问题.我有一个数据库,其中充满了来自少数(总共9个)供应商的产品信息(约50,000条记录).该脚本提取一个XML文件,其中包含每个供应商的feed中有更改的产品列表,找到该记录,然后对其进行适当的修改.

在产品表中查找与供应商的SKU和供应商ID相匹配的单个产品记录的查询耗时为0.25秒至0.5秒,因此约400行的小更新耗时超过2分钟.我是数据库性能的新手,我一直在努力理解为什么我有一个非常简单的查询要花很长时间才能运行.

首先,我注释掉了每个查询在数据库中的查询,以查看脚本本身迭代XML文件所花费的时间.它将在1-2秒内遍历400条记录.然后,我在迭代中遇到的第一个查询中添加了该查询,该查询正在执行搜索以在表中为XML文件中调用的产品找到正确的条目.在这里,时间跳到了脚本的2分钟运行时间.

迭代代码,总结了相关部分:

$checkq = "SELECT * FROM productLinks WHERE affiliateSKU=:sku AND supplierID=:sid";

$checkqs = $DBHa->prepare($checkq);

$xml = simplexml_load_file($supplierURL,"SimpleXMLElement",LIBXML_NOCDATA);

foreach($xml->children() as $products) {

//Set variables from the XML

$checkqs->execute(array(':sku'=>$sku, ':sid'=>$supplierID)); //This is the problem query

//I capture the number of results (should always be 1 or 0),

//and modify the entry if the result is 1, and insert a new entry if 0)

}

在研究可能是什么问题的过程中,我选择了一个随机条目并直接在phpMyAdmin中运行上述查询,时间从0.1到0.75秒不等.在研究过程中,我使用了一些故障排除步骤,但无法弄清楚它的真正含义.

我使用了Explain语句,并返回了以下内容:

id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra

1 | SIMPLE | productLinks | ref | supplierID | supplierID | 4 | const | 11827 | Using where

然后,我对查询运行了Profile,而查询本身花了0.2218秒根据phpMyAdmin返回1结果,而Profile结果总共返回了0.00293秒,如下所示:

Status Duration

starting 0.000132

checking permissions 0.000009

Opening tables 0.000007

init 0.000011

optimizing 0.000007

executing 0.000010

end 0.000007

query end 0.000006

closing tables 0.000019

freeing items 0.000075

cleaning up 0.000010

谁能帮助我确切地了解使查询花费这么长时间的原因,以及如何提高性能?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。