加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 循环中的SQL查询

发布时间:2021-05-23 19:31:43 所属栏目:MySql教程 来源:网络整理
导读:Google代码建议您应该在循环中避免SQL查询.原因是多次往返数据库会显着减慢脚本速度.他们给出的示例查询是这样的. $userData = array();foreach ($userList as $user) { $userData[] = '("'.$user['first_name'].'","'.$user['last_name'].'")';}$query =

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.但是在这种情况下,您必须在性能和可读性/可维护性之间进行选择.子查询通常很难理解和优化/调试.

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读