Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个MYSQL查询与多个php foreach循环_Php_Mysql_Foreach_Associative Array - Fatal编程技术网

多个MYSQL查询与多个php foreach循环

多个MYSQL查询与多个php foreach循环,php,mysql,foreach,associative-array,Php,Mysql,Foreach,Associative Array,数据库结构: id galleryId type file_name description 1 `artists_2010-01-15_7c1ec` `image` `band602.jpg` `Red Umbrella Promo` 2 `artists_2010-01-15_7c1ec` `image` `nov7.jpg` `CD Release Party` 3 `artists_2010-01-1

数据库结构:

id  galleryId                 type     file_name       description
1   `artists_2010-01-15_7c1ec`  `image`  `band602.jpg`   `Red Umbrella Promo`
2   `artists_2010-01-15_7c1ec`  `image`  `nov7.jpg`      `CD Release Party`
3   `artists_2010-01-15_7c1ec`  `video`  `band.flv`      `Presskit`
我将为一个应用程序的一个部分提取图像,在另一个部分提取视频,等等。对每个部分进行多个mysql查询是否更好,如下所示:

$query = mysql_query("SELECT * FROM galleries WHERE galleryId='$galleryId' && type='image');
…还是我应该构建一个关联数组,并在需要使用结果集时在数组中反复循环


谢谢你的想法。

最好有多个查询。每次运行查询时,所有数据都会被拉出并加载到内存中。如果您有5种不同的类型,这意味着该类型的每个页面加载的数据量是所需数据量的5倍

即使一次只显示一个页面,如果一次在一个页面上可以显示100个或多个页面,那么您可能会很快开始使用限制/偏移查询分页。

如果“节”是指用户可以查看的单独页面(单独的HTTP请求),我会根据需要建议每种类型的查询。例如,如果在只有图像数据集的页面上,实际上不需要获取视频数据集。获取所有内容不会真正节省太多时间,因为不管怎样,每次点击页面都会连接到数据库(我假设)

如果你所说的“部分”是指一页的不同部分,那么立即获取所有内容。这将节省查询时间(仅一次查询)

但是,根据数据集的大小,PHP的内存限制查询可能会遇到麻烦。然后,您可以尝试提高内存限制,但如果失败,您可能不得不退回到每种类型的查询


使用按类型查询的方法将部分计算负载转移到数据库服务器,因为您将只请求和获取真正需要的内容。您不必编写代码来过滤和排序结果。数据库通常比PHP代码更擅长过滤和排序。如果可能的话,启用MySQL的查询缓存,这将比用PHP编写的任何查询都要快得多。

这取决于更重要的内容:可读性或性能。我希望单个查询和预先填充PHP数组的执行速度会更快,因为数据库连接很昂贵,但每个部分的简单查询可读性要高得多


除非你知道(而不仅仅是希望)你将获得大量的流量,否则我会进行单独的查询,然后担心优化,如果这看起来是个问题的话。在这一点上,您还需要做其他事情,例如构建数据访问层和添加一些缓存。

如果您的数据都来自一个表,我只会执行一个查询

我假设您正在构建一个页面,其中包含图片部分、视频部分、音乐部分等。请按媒体类型编写查询返回结果-遍历所有图片,然后遍历所有视频,然后遍历所有音乐。

谢谢大家-这一个(如果为真)这对我来说很有意义,因为每个类别中只有少数几个文件。一个问题是。