PHP数组与MYSQL查询速度优化

时间:2010-08-29 21:00:45

标签: php mysql arrays

我正在尝试尽可能快地制作我的php mysql驱动页面。 我有一个相当标准的网站,左栏菜单包含文章和食谱列表(从数据库中加载),然后在主要内容上有一些随机更改的文章,其中包含剪辑预览和随机配方。

我目前得到的是一个SQL查询,它将所有文章和食谱加载到一个看起来像这样的php数组中:

$s = s("SELECT * FROM `pages` WHERE `visible`='1' ORDER BY `group` ASC, `date` DESC");
   while($r=mysql_fetch_assoc($s)) $hPage[]=$r;
   $hPage_count = count($hPage);
   $hPage_keys = array_keys($hPage);
   $hPage_size = sizeOf($hPage_keys);

然后我简单地回过头来搜索这个数组,查找我页面不同部分所需的所有数据。

我的一个循环看起来像

for ($i=0; $i<$hPage_size; $i++){
$c = $hPage[$hPage_keys[$i]];
if($c['group']==1){
$type[$c['type']][count($type[$c['type']])] = array('title'=>$c['title'],'url'=>$c['url']);
}
}

我需要知道的是,这是最快的方法吗?只有一个SQL查询,将所有内容加载到php数组中然后使用它,或者更好地进行多个SQL查询?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

根据经验,在尽可能少的数据库调用中提取所需的所有信息对于应用程序性能来说是一件好事。假设您没有提取大量信息,而您实际上并不需要该页面,我认为您可能已经走上正轨。

由于您实际上是在使用数据库进行查询,因此您还需要确保查询得到很好的优化。

与所有与性能相关的方法,只有真正了解的方法是使用测量和分析器,并且只有在确实需要提高性能时才会这样。

答案 1 :(得分:0)

数据库的唯一目的是收集,整理,处理和返回数据。最好让它达到最佳状态。但是,数据库往往是最大的瓶颈。保持查询次数,确保每次通话都有效。

如果您要查询单个表并且需要多个查询来完成这项工作,那么可能会有更高效和更优雅的解决方案。