发布于 2015-11-14 15:04:56 | 233 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的Mysql教程,程序狗速度看过来!

Mysql关系型数据库管理系统

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。


测试源码:

header('Content-type:text/html;charset=utf-8;');
//for($num=0;$num<8;$num++){
    insert();
    insert(false);
//}
function insert($myisam =true){
    $mysqli = new mysqli('127.0.0.1','root','sa','t100w');
    $start = getMillisecond();
    $table = 'users';
    $type = 'innodb_group_h';
    if($myisam){
        $table.='_myisam';
        $type = 'myisam_group_h';
    }
    $sql = ' SELECT count(*),gender FROM `'.$table.'` group by gender having count(*)>10000';
    /*for($i = 0 ;$i<10000;$i++) {
        $data = array(
            'username' => rand_string(),
            'password' => '123456',
            'gender' => rand_gender(),
            'mobile' => $i % 6 == 0 ? rand_number() : '',
            'email' => $i % 7 == 0 ? rand_string(10) : '',
            'actived' => $i % 3 == 0 ? 1 : 0,
            'created' => date('Y-m-d H:i:s', time()),
            'is_del' => 0
        );

        $sql = 'insert into '.$table.'(username,password,gender,mobile,email,actived,created,is_del) VALUES(';
        $j=0;
        foreach ($data as $d) {
            if($j==7)
                $sql .="'$d'";
            else
                $sql .= "'$d'".',';
            $j++;
        }
        $sql .= ')';
        $mysqli->query($sql);
        unset($data);
    }*/
    $mysqli->query($sql);
    $exec_time = (getMillisecond()-$start);
    $time_sql = "insert into time_looks(engine_table,exec_time) VALUES('$type','$exec_time')";
    $mysqli->query($time_sql);
    $mysqli->close();
}

测试比较(极快表示小于等于1MS)

insert比较

myisam:平均5300MS innodb:平均22300MS

输入图片说明

可以看出myisam写入速度是innodb的3-4倍

大小比较:

输入图片说明

innodb占据空间近2倍于myisam

select比较

普通where子句
sqL:SELECT `id`, `username`, `password`, `gender`, `mobile`, `email`, `actived`, `created`, `is_del` FROM `users` WHERE actived=1

输入图片说明

myisan:极快 innodb:慢

sqL:SELECT `id`, `username`, `password`, `gender`, `mobile`, `email`, `actived`, `created`, `is_del` FROM `users` WHERE actived=1 and gender=1

输入图片说明

制定越精确的条件,innodb速度提高。

like速度比较

输入图片说明

myisan:极快 innodb:慢

group by 、 distinct
 select count(*) from users group by gender;

输入图片说明 innodb稍胜

 select distinct(gender) from users where 1;

输入图片说明

myisam稍胜

having
 SELECT count(*),gender FROM `users` group by gender by count(*)>10000

输入图片说明

myisam近2倍

GROUP BY,WHERE,HAVING之间的区别和用法 1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。 2.GROUP BY 子句用来分组 WHERE 子句的输出。 3.HAVING 子句用来从分组的结果中筛选行。

update比较

输入图片说明



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务