php+mysql prepare 与普通查询的性能对比实例讲解_Mysql

php+mysql 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秒

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php+mysql
prepare
prepare yourself讲解、mysql prepare、mysqli prepare、mysql stmt prepare、mysql prepare from,以便于您获取更多的相关知识。

时间: 2024-09-30 21:52:25

php+mysql prepare 与普通查询的性能对比实例讲解_Mysql的相关文章

SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比

原文:SQL点滴10-使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比  今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写,希望高手们不要见笑.下面的sql语句设计到三个表,表的内容我用txt文件复制进去,这里不妨使用上一个随笔介绍的建立端到端的package的方法将这些表导入到数据库中,具体的就不说了. 从这里下载文件emplo

深入解析MySQL的事务隔离及其对性能产生的影响_Mysql

 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销.Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少.读取未提交的数据,也被称之为脏读(Dirty Read).Read Committed(读取提交内容)       这是大多数数据库系统的默认隔离级别(

mysql 一次向表中插入多条数据实例讲解_Mysql

我们先来创建一种表Authors: CREATE TABLE Authors( AuthID SMALLINT NOT NULL PRIMARY KEY, AuthFN VARCHAR(20), AuthMN VARCHAR(20), AuthLN VARCHAR(20) ) ENGINE=INNODB; 然后向表中一次性插入多条数据,sql插入代码如下: INSERT INTO Authors VALUES (1006, 'H', 'S.', 'T'), (1007, 'J', 'C', 'O

MySQL慢查询优化之慢查询日志分析的实例教程_Mysql

数据库响应慢问题最多的就是查询了.现在大部分数据库都提供了性能分析的帮助手段.例如Oracle中会帮你直接找出慢的语句,并且提供优化方案.在MySQL中就要自己开启慢日志记录加以分析(记录可以保存在表或者文件中,默认是保存在文件中,我们系统使用的就是默认方式). 先看看MySQL慢查询日志里面的记录长什么样的: Time Id Command Argument # Time: 141010 9:33:57 # User@Host: root[root] @ localhost [] Id: 1

Android ListView性能优化实例讲解

前言:   对于ListView,大家绝对都不会陌生,只要是做过Android开发的人,哪有不用ListView的呢?   只要是用过ListView的人,哪有不关心对它性能优化的呢?   关于如何对ListView进行性能优化,不仅是面试中常常会被问到的(我前段时间面试了几家公司,全部都问到了这个问题了),而且在实际项目中更是非常重要的一环,它甚至在某种程度上决定了用户是否喜欢接受你的APP.(如果你的列表滑起来很卡,我敢说很多人会直接卸载)   网上关于如何对ListView进行性能优化,提

快速理解MySQL中主键与外键的实例教程_Mysql

主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply 先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php?id=1   表示我要访问的是帖子id是1 的帖子- 再来说说外键,当我们删除某个帖子的时候,需要执行另一个操作,就是删除所有回帖,如果正常情况下,我们需要执行两次delete操作(thread和 reply),这时候如果存在外键,例如,在reply 表里面建立一个指向thread表

mysql insert语句操作实例讲解_Mysql

insert的语法 复制代码 代码如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]     [INTO] tbl_name [(col_name,...)]     VALUES ({expr | DEFAULT},...),(...),...     [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | DELAYED | HIGH

mysql drop database删除数据库命令实例讲解_Mysql

mysql drop database命令用于删除一个数据库,如果试图使用drop database命令删除一个不存在的数据库,那么那么你会收到此错误:ERROR 1008 (HY000): Can't drop database 'tutorial_database'; database doesn't exist,本文章向大家介绍mysql drop database使用实例. 首先在使用drop database删除数据库之前,我们需要连接到数据库服务器. 我们可以使用以下命令登录到mys

MySQL创建和删除表操作命令实例讲解_Mysql

创建表 简单的方式 复制代码 代码如下: CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 复制代码 代码如下: CREATE TABLE IF NOT EXISTS person ( number INT(11), name VARCHAR(255), birthday DATE ); 查看mysql创建表: 复制代码 代码如下: SHOW CREATE table person; CRE