php – 循环中的SQL查询

前端之家收集整理的这篇文章主要介绍了php – 循环中的SQL查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的MySQL相关文章