php+mysql预查询prepare 与普通查询的性能对比

本文通过对比预查询(prepare)与普通查询的方式,展示了预查询如何有效降低数据库服务器的负载及提高处理大量数据时的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下。

实例代码如下:

<?php  
class timer {     
        public $StartTime = 0;     
        public $StopTime = 0;     
        public $TimeSpent = 0;     
            
        function start(){     
            $this->StartTime = microtime();     
        }     
            
        function stop(){     
            $this->StopTime = microtime();     
        }     
            
        function spent() {     
            if ($this->TimeSpent) {     
            return $this->TimeSpent;     
  
            } else {   
                //  http://www.manongjc.com
                $StartMicro = substr($this->StartTime,0,10);     
                $StartSecond = substr($this->StartTime,11,10);     
                $StopMicro = substr($this->StopTime,0,10);     
                $StopSecond = substr($this->StopTime,11,10);     
                $start = floatval($StartMicro) + $StartSecond;     
                $stop = floatval($StopMicro) + $StopSecond;     
                $this->TimeSpent = $stop - $start;  
                  
            return round($this->TimeSpent,8).'秒';     
            }    
        }   
    
}  
  
$timer = new timer;     
$timer->start();    
  
$mysql = new mysqli('localhost','root','root','ganbaobao_ucenter');  
  
/* 
$query = $mysql->query("select username,email from uc_members where uid < 100000"); 
$result = array(); 
http://www.manongjc.com/article/1194.html
while($result = $query->fetch_array()) 
{ 
   $result[] = array('name'=>$result['username'],'email'=>$result['email']); 
} 
*/  
$query_prepare = $mysql->prepare("select username,email from uc_members where uid < ?");  
  
$id = 100000;  
$query_prepare->bind_param("i",$id);  
  
$query_prepare->execute();  
$query_prepare->bind_result($username,$email);  
  
$result = array();  
while($query_prepare->fetch())  
{  
    $result[] = array('name'=>$username,'email'=>$email);  
}  
  
$timer->stop();    
echo '</br>预查询mysql运行100000条数据时间为: '.$timer->spent();    
unset($timer);    
//var_dump($result);  

普通mysql运行1000条数据时间为: 0.011621秒

普通mysql运行10000条数据时间为: 0.07766891秒

普通mysql运行100000条数据时间为: 0.10834217秒

 

预查询mysql运行1000条数据时间为: 0.00963211秒

预查询mysql运行10000条数据时间为: 0.04614592秒

预查询mysql运行100000条数据时间为: 0.05989885秒

转载于:https://www.cnblogs.com/myhomepages/p/6049116.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值