我需要使用這樣毫無意義的SQL與PHP如果
foreach($items as $item)
{
$sql = "UPDATE `siteims` SET refs = refs + 1 WHERE imid = '{$item->img}';";
$sql .= "UPDATE `lists` SET refs = refs + 1 WHERE lid = '{$item->lili}'";
$dbh->exec($sql);
}
代碼操作在MySQL表中的條目有可能是在$項目多達50項。此代碼的一個變種將是
foreach($items as $item)
{
if ('z' != $img->img)
$sql = "UPDATE `siteims` SET refs = refs + 1 WHERE imid = '{$item->img}';";
if ('z' != $item->lili)
$sql .= "UPDATE `lists` SET refs = refs + 1 WHERE lid = '{$item->lili}'";
$dbh->exec($sql);
}
在這兩種情況下,我正在執行每個項目在$項目中的SQL語句序列。我的問題
- 這豈不是一大堆更有效的建立$ SQL爲項目然後執行它?
- 但是,如果$ items中的所有潛在的50個項目都會產生有意義的SQL,那麼這並不意味着一個非常慢的SQL語句批處理?
- 最後,如果的測試與我的代碼的第二版一樣,或者只是構建SQL並讓mySQL處理WHERE測試返回空行的事實,那麼執行PHP方面會更好嗎?
我非常感謝任何幫助。
你當然可以構建測試來回答這些問題嗎?看來你的問題的答案在於另一個問題:你的瓶頸在哪裏? – 2013-04-08 04:16:09
''z'!= strlen($ img-> img)' - 那是什麼? o_O – zerkms 2013-04-08 04:16:13
看上去很好 - 那裏應該沒有strlen。我正在考慮放入另一個版本的代碼,因爲我放在這個 – DroidOS 2013-04-08 04:22:25