`
yunmoxue
  • 浏览: 289363 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

php mysql 一次连接多次查询, 每次连接只查询一次

阅读更多
对俩者的链接速度很好奇,就测试了一下...
php5,mysql5.
表里有3000条数据,
短连接查询前1000条,连接断开10次数据库,进行查询;
长连接查询后1000条,连接1次数据库,进行10次查询;
大部分测试,结果类似下边, 每次连接查询一次 耗时117毫秒, 一次连接查询多次  耗时13毫秒.

sort connection: 414.452 - 296.879: 117.573 millisecond
long connection: 427.635 - 414.489: 13.146 millisecond


<?php
	require("db_conn.php");
    $mysql_server_name="127.0.0.1"; //数据库服务器名称
    $mysql_username="root"; // 连接数据库用户名
    $mysql_password="root"; // 连接数据库密码
    $mysql_database="osc_store"; // 数据库的名字
    $search_count=10;
    $search_number = 100;
    //开始
	$begin = microtime()*1000;
	for($i=0;$i<$search_count;$i++){
		$dbConn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
		mysql_select_db($mysql_database, $dbConn);
		$queryStr = "select * from `products_description` order by products_id asc limit ".($i*$search_number)." ".$search_number;			
		$result = mysql_query($queryStr,$dbConn);
		if(!result){
			die(mysql_error());
		}
		$list = array();
		while($row=mysql_fetch_array($result)){
			$list[$row["id"]] = $row;
		}
		mysql_free_result($result);
		mysql_close($dbConn);
	}
	$end = microtime()*1000;
	echo "sort connection: ".$end." - ".$begin.": ".(($end-$begin))." millisecond<br/>";
	unset($list);
	//开始
	$begin = microtime()*1000;
	$dbConn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
	mysql_select_db($mysql_database, $dbConn);
	for($i=0;$i<$search_count;$i++){
		$queryStr = "select * from `products_description` order by products_id desc limit ".($i*$search_number)." ".$search_number;			
		$result = mysql_query($queryStr,$dbConn);
		if(!result){
			die(mysql_error());
		}
		$list = array();
		while($row=mysql_fetch_array($result)){
			$list[$row["id"]] = $row;
		}
		mysql_free_result($result);
	}
	mysql_close($dbConn);
	$end = microtime()*1000;
	echo "long connection: ".$end." - ".$begin.": ".(($end-$begin))." millisecond";
?>

分享到:
评论
3 楼 mahonet 2011-10-27  
这叫长连接?误人子弟吧。。。
长连接应该是 mysql_pconnect 吧。。。
2 楼 yunmoxue 2011-07-08  
flyoscar 写道
二个情况的差距这么大,以前有次考试就是这方面的。结果被淘汰了....

这种做法也是看情况了..
一般一个页面显示内容不需要多少,就一次性查出来放在内存里,等待输出显示.
但是内容多的话,比如几千条,几万条信息,就会导致超时..如果内容量大的话,有时候会内存不够.
1 楼 flyoscar 2011-07-05  
二个情况的差距这么大,以前有次考试就是这方面的。结果被淘汰了....

相关推荐

    一个mysql数据库连接类

    在这个特定的场景中,数据库连接类是一个封装了与MySQL交互逻辑的对象,它可以简化数据库连接、查询执行、结果处理等操作。这样的类通常包含方法如`connect()`、`disconnect()`、`query()`、`fetch()`等。 在描述中...

    mysql数据库5.6连接包

    4. **SQL语句**:使用MySQL连接包,开发者可以执行各种SQL语句,包括数据查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)、事务处理(BEGIN, COMMIT, ROLLBACK)等。 5. **预编译语句**...

    一个PHP+MYSQL醒目留言本PHP程序

    总结来说,PHP+MYSQL醒目留言本是一个典型的Web应用实例,它涵盖了前端交互、后端处理、数据库操作等多个环节,对于学习Web开发的初学者具有很高的学习价值。通过理解和实践此类程序,可以深入理解Web开发的基本流程...

    从零开始MySQL PDF资源

    这也是非常不好的,因为每次建立一个数据库连接都很耗时,好不容易建立好了连接,执行完了SQL语句,你还把数据库连接给销毁了,下一次再重新建立数据库连接,那肯定是效率很低下的! 因此,一般我们必须要使用一个...

    PHP并发查询MySQL的实例代码

    同步查询是传统的数据库查询方式,客户端向数据库服务器发送查询请求,然后必须等待该查询完成并返回结果后才能进行下一次操作。这种方式非常直观易懂,但缺点是效率低下,因为在此期间,客户端无法进行其他操作,...

    PHP错误Warning:mysql_query()解决方法

    但在类的析构函数`__destruct()`中直接使用`mysql_close($this-&gt;link)`来关闭数据库连接,这就导致了一个问题:如果`mysqlClass`类的实例被创建多次,第二次(及之后每次)的实例化会在析构函数中关闭之前的数据库...

    基于PHP的Mysql数据访问工具研究.pdf

    PHP的执行效率高于JavaScript,因为PHP代码在服务器端执行后会暂存于内存,对于多次请求,能更快地响应用户。 PHP与CGI(Common Gateway Interface)相比,虽然两者都可以跨平台,但CGI每次调用都需要重新编译,...

    PHP上传多个文件大量数据并导入Mysql数据库

    - 分批插入:每次插入一定数量的数据,避免一次性处理大量数据导致内存溢出。例如,可以使用`for`循环遍历数据数组,每次插入一部分数据。 6. 性能优化: 当处理大量数据时,应考虑性能优化。比如,开启数据库...

    PHP实现的excel数据导入到MySQL数据库的程序包

    一次性处理大量数据可能导致内存溢出,所以可能采用分批读取和导入的方式,比如每次只处理一定数量的行,然后释放内存,再继续下一批。这可以通过循环来实现,每次处理一部分数据后调用`unset()`释放变量,减少内存...

    mysql:一个分页php类库.zip

    MySQL 分页PHP类库是一种工具,它为开发者提供了一种高效、简洁的方式来处理数据库查询的分页问题。在Web开发中,特别是在数据量较大的场景下,分页是必不可少的功能,它可以提升用户体验,避免一次性加载过多数据...

    PHP数据库连接mysql与mysqli对比分析

    而mysqli支持持久连接,即多次操作可以复用同一个连接,从而降低服务器的资源消耗。 2. **功能扩展**:mysqli扩展包含了更多的高级特性,如事务处理、预处理语句、多语句执行等,这些都是原始mysql函数集所不具备的...

    mysql 一次更新(update)多条记录的思路

    在MySQL中,更新多条记录通常涉及到`UPDATE`语句的使用。在处理批量更新时,如果需要根据特定条件更新不同记录的多个字段,可以采用`CASE`语句结合`WHERE`子句来实现。标题提到的问题是,在已经通过`INSERT`方法导入...

    解决PHP里大量数据循环时内存耗尽的方法

    这种方法的优点是便于程序对数据集进行多次处理,如遍历、统计和过滤操作。然而,缺点也非常明显:若数据量很大,会迅速耗尽内存资源。 2. 非缓冲查询(Unbuffered Query):通过特定的设置,让PHP在执行查询时,...

    mysql数据库字段复制

    总的来说,使用PHP进行MySQL数据库字段复制涉及到数据库连接、SQL查询、数据分页处理、主键冲突解决等多个环节。通过合理的代码设计和优化,可以实现高效且稳定的数据库复制功能。在处理大规模数据时,务必考虑性能...

    php+mysql网上投票

    **二、PHP连接MySQL** 在PHP中,我们可以使用`mysqli`或`PDO`扩展来连接和操作MySQL数据库。例如,使用`mysqli`的代码示例: ```php &lt;?php $servername = "localhost"; $username = "your_username"; $password = ...

    第18章MySQL在Web开发中的应用.docx

    - 持久连接:多次请求共用同一连接,提高效率,但可能导致资源浪费。 8. PHP操作数据库数据: - `mysql_query`用于执行SQL语句,如INSERT、UPDATE、DELETE和SELECT。 9. 获取并操作数据库返回数据: - `mysql_...

    如何查询mysql中执行效率低的sql语句[借鉴].pdf

    5. **批量插入**:在示例中,逐个插入数据可能导致多次磁盘I/O,影响性能。可以考虑使用`INSERT INTO...VALUES`的批量插入方式,减少数据库操作次数。 6. **连接查询优化**:连接查询(JOIN)是数据库操作中常见的...

    PHP+MYSQL新手学习实例代码(留言板)

    这个PHP+MySQL留言板实例涵盖了数据库设计、数据库连接、用户界面呈现、分页技术和文件操作等多个方面,是学习Web开发和数据库管理的优秀案例。通过对这些代码的理解和实践,新手可以快速掌握PHP和MySQL在实际项目中...

    php查询mysql大量数据造成内存不足的解决方法

    这样,每次只获取一行数据,可以显著降低内存消耗。 `mysql_unbuffered_query`的优点在于,对于大结果集,它可以节省大量内存,同时允许在获取第一条数据后立即进行操作,无需等待整个查询完成。然而,使用此函数也...

    深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非

    从技术的角度来看,永久连接的前提条件是PHP必须安装为多线程或多进程Web服务器的插件或模块,最典型的例子就是作为Apache服务器的一个模块。在Apache的多进程模式中,父进程和子进程协调运行,子进程负责生成Web...

Global site tag (gtag.js) - Google Analytics