以下代码是我真实代码的模型。当myFunction被调用时,我获得了很大的性能提升。 myTable不超过几百行,但调用myFunction会增加约10秒的执行时间。试图在已经访问该表的循环内访问表的一行时是否存在固有的错误?MySQL性能同时访问表
<select>
<?php
$stmt = SQLout ("SELECT ID,Title FROM myTable WHERE LEFT(Title,2) = ? ORDER BY Title DESC",
array ('s', $co), array (&$id, &$co_title));
while ($stmt->fetch()) {
if (myFunction($id)) // skip this function call and save 10 seconds
echo '<option value="' . $co_title . '">' . $co_title . '</option>';
}
$stmt->close();
function myFunction ($id) {
$stmt = SQLout ("SELECT Info FROM myTable WHERE ID = ?",
array ('i', $id), array (&$info));
if ($stmt->fetch()) {
$stmt->close();
if ($info == $something)
return true;
}
return false;
}
?>
SQLOUT基本上是:
$sqli_db->prepare($query);
$stmt->bind_param;
$stmt->execute();
$stmt->bind_result;
return $stmt;
你意识到你查询'myTable' N + 1次,其中n是行权的数量? – tonyjmnz 2013-03-13 19:29:54
当你看到在循环中选择,你知道某件事情正在做错 – 2013-03-13 19:34:33
这就是我的问题:为什么不能myFunction,有它自己的局部变量和指针,独立于主例程访问myTable? – user2033684 2013-03-13 19:41:44