【发布时间】:2011-01-17 19:59:08
【问题描述】:
Google 代码建议您应避免在循环中使用 sql 查询。原因是多次往返数据库会显着减慢您的脚本速度。他们给出的示例查询是这样的。
$userData = array();
foreach ($userList as $user) {
$userData[] = '("'.$user['first_name'].'", "'.$user['last_name'].'")';
}
$query = 'INSERT INTO users (first_name,last_name) VALUES'.implode(',',$userData);
mysql_query($query);
我的问题是... 1. 让你的查询远离循环有多重要,它总是可以避免的吗? 2. 你怎么能用同样的逻辑来实现一个 SELECT 语句。
即假设我有这个查询。
$index=0;
while ($index < count($id)) {
$result[] = mysql_query("SELECT * FROM tblInfo WHERE site_id = '".$id[$index]."' ");
$index++;
}
如何在循环之外执行这个 SELECT 语句?我有大量比这复杂得多的 SELECT 语句。因此,如果认为有必要,我想让这些查询脱离循环。如果有人同意谷歌,您能否发布一些示例代码。
任何回复将不胜感激。
【问题讨论】:
-
第一个例子没有意义。我怀疑您的“脚本”必须不断地进行批量插入。而对于一次性操作来说,这样的循环并不重要。至于选择 - 只需学习 SQL
-
SQL 是基于 SET 的,而不是过程的。
标签: php mysql performance optimization google-code