zoukankan      html  css  js  c++  java
  • php+mysql预查询prepare 与普通查询的性能对比

    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秒

  • 相关阅读:
    Jmeter混合场景压力测试
    数据驱动DDT(Data-Driven Tests):测试数据的参数化
    运用TextSuite和TestRunner运行测试脚本
    Test Fixture框架结构
    解决appium-doctor报各种 cannot be found问题
    搭建python+appium环境的时候遇到 'could not find adb.exe!'的问题
    Python appium搭建app自动化测试环境
    夜神模拟器查看APP的activity等信息
    [leetcode 23]Merge k Sorted Lists
    [leetcode 22]generate parentheses
  • 原文地址:https://www.cnblogs.com/myhomepages/p/6049116.html
Copyright © 2011-2022 走看看