PHP程序循环迭代中谨慎操作数据库

PHP草根滴我们,一直以为数据库是万能,为了实现功能却很少去考虑效率与数据库瓶颈问题。比如在一个循环中查询数据库,一个迭代方法中查询数据库都是非常不可取滴,尤其是前端程序!在访问量不大,并发少时看不出任何问题!一旦访问量突增,并发访问量多时往往就成数据库服务器负荷过重,严重情况会宕机,后果真不堪设想,而且在这种情况下PHP程序员往往很难查具体原因。

先看一个迭代案例代码,当分类达到1000个以上滴时候,调用一次就要查询超1000次以上滴数据库查询,这样滴代码是何其恐怖,不用再细说了吧!

 代码如下 复制代码

/**
 * 递归获取分类
 * @author:xxx
 * @param $tree_id
 */
function get_child_tree($tree_id = 0)
{
    $three_arr = array();
         
    $sql = “SELECT count(*) FROM TABLE WHERE parent_id = “$tree_id” AND is_show = 1 ";
    if ($GLOBALS[db]->getOne($sql) || $tree_id == 0)
    {
        $child_sql = "SELECT ……";
        $res = $GLOBALS[db]->getAll($child_sql);
        foreach ($res AS $row)
        {
            if ($row[is_show])
            {
                $arr[id] = $row[cat_id];
                ……
            }
 
            if ( intval($row[cat_id]) != 0) {
            $three_arr[$row[cat_id]][cat_id] = get_child_tree($row[cat_id]);
            ……
            }
        }
    }
    return $three_arr;
}

再有一些例子,有些同学喜欢用while,for等循环中作数据库查询操作,同样是不可取滴,还是那句话,当数据库并发更新不大,或者访问量不大滴情况下,数据库服务器负荷也是很重滴,操作时须谨慎。特别是在作为封装滴函数内部,因为往后滴程序你会不小心滴多调用几次这个函数,那造成服务器滴开销是无法估量滴。

时间: 2025-01-01 22:42:57

PHP程序循环迭代中谨慎操作数据库的相关文章

贴篇文章,BETA2中ACCESS操作数据库

access|数据|数据库 朋友们好,回家已经有10天了,总算是开始学.NET了,直接的感觉就是MS的帮助太差了,好多错误在上面,害的我走了好多弯路,结果好多东西还没有完全搞好,简直了!由于BETA2和BETA1比较,变化太大了,而现在无论是书还是网络上的资料基本都还停留在BETA1上,是朋友们在学习的时候遇到好多问题还无处可查,这里我把我的学习过程中遇到的一些问题和体会拿出来与大家分享,希望能给也在学习过程中的朋友有些帮助! 我估计,朋友们在学习.NET的过程中,遇到的最多的问题就是在和数据库

java中 从操作数据库,是不是通过流来实现的。

问题描述 java中 从操作数据库,是不是通过流来实现的. java中 从操作数据库,是不是通过流来实现的.java中 从操作数据库,是不是通过流来实现的. 解决方案 java对数据库的操作Java JDBC实现数据库的增删改查操作java操作Access *.mdb数据库的实现 解决方案二: 所有的数据最底层都是数据流,只是上层的封装格式不一样,java一般使用jdbc调用数据库,有兴趣你可以查查jdbc的工作原理 解决方案三: http://blog.csdn.net/brilliancez

Java的Hibernate框架中用于操作数据库的HQL语句讲解_java

 上次我们一起学习了用Criteria进行相关的操作,但由于Criteria并不是Hibernate官方推荐的查询方式,我们也并不多用.现在我们来看一下官方推荐的HQL,一起学习一下它的强大.  说是HQL,也就是Hibernate查询语句,和SQL有什么区别呢?一个字母的区别,哈哈.  当然不是这样,HQL和SQL的区别在于思想的不同,HQL是用面向对象的方向进行查询,而SQL则是对数据库二维表进行查询,这里包含的是思想的不同.HQL实际上也是SQL,它由Hibernate帮我们在内部进行转换

开机出现服务器正在运行中由于另一个程序正在运行中怎么办?

  为什么开机后就出现"服务器正在运行中由于另一个程序正在运行中,此操作无法完成.请选择"切换到"来激活正在运行中的程序,并更正问题",需要点击多次"切换到"才能使这个对话框消失,电脑也不能进入正常的运行,奇怪了,今天小编就自己的亲身经历来交大家如何解决. 1.crtl+alt+del调用windows任务管理器 2.然后,文件-新建任务运行 3.输入msconfig.msc 4.然后禁用里面的所有开机启动项 5.接着重启一下电脑,启动起来时候就

如何在Java程序中访问mysql数据库中的数据并进行简单的操作_Mysql

在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据并进行简单的操作,具体详情请看下文. 创建一个javaProject,并输入如下java代码: package link; import java.sql.*; /** * 使用JDBC连接数据库MySQL的过程 * DataBase:fuck, table:person: * 使用myeclipse对mysql数据库进行增删改查的基本操作. */ public

在ASP.NET中利用VWD操作数据库简介

asp.net|数据|数据库 VWD2005中包含了SQL Server 2005 Express Edition,它是SQL Server 2005的一个免费版本,它的目标用户是那些希望用简单的数据库解决方案来建立应用程序的非专业的或狂热的开发者.由于SQL Server Express支持完整的SQL Server编程模型,例如SQLCLR.T-SQL.存储过程.视图.触发器和XML数据类型,你可以使用SQL Server Express来了解这些技术,并且确保自己的应用程序可以运行在更高层

在ASP程序中访问Access数据库

access|程序|访问|数据|数据库          在基于微软IIS/PWS的网络平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最常见的模式了.而对于小型的数据库应用需求,微软的Access数据库,应该是与ASP程序配套使用的首选.由于Access数据库的ODBC驱动程序支持的SQL指令全,执行效率高,所以Access后台数据库+ASP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式.         在这种使用模式中,ASP程序无疑是最重要的,是沟通客户端和后台

ASP中使用SQL语句操作数据库

数据|数据库|语句 用ASP操作数据库时,很多人都使用记录集,但我觉得用SQL语句更好些,于是就写了这篇文章,希望对你有帮助. <%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''以下段为连接数据库和断开连接(数据库为Access格式,采用DSN来连接)''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''sub conn

ASP.NET中利用VWD操作数据库

asp.net|数据|数据库 VWD2005中包含了SQL Server 2005 Express Edition,它是SQL Server 2005的一个免费版本,它的目标用户是那些希望用简单的数据库解决方案来建立应用程序的非专业的或狂热的开发者.由于SQL Server Express支持完整的SQL Server编程模型,例如SQLCLR.T-SQL.存储过程.视图.触发器和XML数据类型,你可以使用SQL Server Express来了解这些技术,并且确保自己的应用程序可以运行在更高层