站长网 MySql教程 php – 循环中的SQL查询

php – 循环中的SQL查询

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

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/jc/mysql/2021/0524/5710.html

作者: dawei

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

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部