数据库结构:

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');

...或者我应该建立一个关联数组,只是通过阵列上循环,每当我需要使用结果集了吗?

感谢您的想法。

有帮助吗?

解决方案

这取决于什么是更重要的:可读性或性能。我期望单个查询和预填充PHP阵列会更快执行,因为数据库连接是昂贵的,但随后为每个部分的简单查询是更具有可读性。

除非你知道(而不仅仅是希望),你会得到我会去单独的查询,然后担心优化,如果它看起来像它会是一个问题,交通量巨大。在这一点上就会有你会想反正做其他事情,如建立一个数据访问层,并增加了一些缓存。

其他提示

如果由“段”你的意思是独立的单页(单独的HTTP请求)的用户可以查看,我会根据需要建议查询每类型。如果那里只有图像数据集的页面上,你真的不需要来获取视频数据,例如设定。你不会真的节省很多时间获取的一切,因为你会被连接到数据库反正打每一页(我认为)。

如果通过“节”你的意思是一个页面的不同部分,然后一次获取的一切。这将节省您的时间上查询(只有一个查询。)

但是,取决于您的数据集的大小,你可能会遇到PHP的内存限制查询的一切,虽然麻烦。然后,您可以尝试提高内存的限制,但如果失败了你可能要回落到查询每个类型。

使用查询每个类型的方法将一些计算负载的数据库服务器,因为你只会请求和获取你真正需要的。你不必编写代码来过滤和搜索结果进行排序。过滤和排序是一些数据库通常比PHP代码要好。如果可能的话,使MySQL的查询缓存,这将加速这些查询比任何你可以用PHP编写更多。

如果您的数据都来自同一个表来了,我就只能做一个查询。

我相信你正在建设一个单一页面与图片一节,一节为视频,音乐节等撰写您的查询返回的结果排序按介质类型 - 在所有的图片重复,那么所有的视频,然后所有的音乐。

最好有多个查询。你运行一个查询每次所有的数据是越来越拉出并加载到内存中。如果有5点不同的类型,这意味着类型的每个页面加载5倍的数据,因为它需要做的。

即使只是一次一个,你可能会想入手LIMIT / OFFSET查询分页相当快,如果你有超过100或然而,许多你可以合理地在一个页面上同时显示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top