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语句比这复杂得多.因此,如果认为有必要,我想从循环中获取这些查询.如果有人同意谷歌,请你发一些示例代码.

任何回复将不胜感激.

最佳答案
您可以将MySQL IN运算符与ID列表一起使用.

SELECT * FROM table WHERE id IN (1,4,6,8,5,6)

它甚至可以处理数千个ID的冗长列表(肯定比千个SELECT更好).但在这种情况下,您还应该考虑设计您的应用程序.如果你需要在每个页面加载时使用带有数千个ID的IN,那么你的设计就会出现问题.

INSERT也可以压缩成一个查询,参见documentation.

通常,循环中的大多数查询通常可以是rewritten as subqueries.但是在这种情况下,您必须在性能和可读性/可维护性之间进行选择.子查询通常很难理解和优化/调试.

dawei

【声明】:邵阳站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。