`
羽落窗前
  • 浏览: 105884 次
  • 性别: Icon_minigender_2
  • 来自: 厦门
社区版块
存档分类
最新评论

PHP查询MySQl数据库的效率小记

 
阅读更多

1. MySQL数据库的连接和关闭

 

根据W3CSchool上的描述:

PHP 脚本一结束,就会关闭数据库连接。如需提前关闭连接,请使用 mysql_close() 函数。

http://www.w3school.com.cn/php/php_mysql_connect.asp

 

现在做PHP开发,通常会用到一些框架,一次脚本执行,对数据库的操作不一定是在一个函数里完成的。这时候频繁的连接和关闭,会降低执行效率。

 

为此特意做了一个实验,代码如下:

 

 

 

            $host = '127.0.0.1';
            $username = 'root';
            $password = '';
            $database = 'test';
            
            $time = new rumtine();
            echo '<p>插入100条数据,每次插入连接一次数据库,插入后关闭连接</p>';
            $time->start();
            for($i=1;$i<=100;$i++){
                $query1 = "INSERT INTO testdata2(val) VALUES('{$i}')";
                $con = mysql_connect($host, $username, $password);
                mysql_select_db($database, $con);
                mysql_query($query1);
                mysql_close();
            }
            $time->end();
            echo $time->spend().'<br/>';
            
            echo '<p>插入100条数据,每次插入连接一次数据库,不关闭连接。</p>';
            $time->start();
            for($i=1;$i<=100;$i++){
                $query1 = "INSERT INTO testdata2(val) VALUES('{$i}')";
                $con = mysql_connect($host, $username, $password);
                mysql_select_db($database, $con);
                mysql_query($query1);
            }
            $time->end();
            echo $time->spend().'<br/>';

 执行五次的结果分别是:

 

每次操作后关闭连接:171.1    165.5    149.9    177.4    156.8

操作后不去关闭连接:144.8    142       132       146.1    137.9

 

2. 批量插入数据

 

批量INSERT记录的时候,最好能用

INSERT INTO tablename (column1, column2 ...) VALUES (val1, val2), (val1, val2), .....

这个效率比一条一条插入要快很多很多……

 

3. DISTINCT和GROUP BY

 

- Group by会根据group的字段按ASC排序

- DISTINCT可以用于计算,一共有多少种不同数值:

  例如: SELECT COUNT( DISTINCT val) FROM tablename

- Group by可以用来计算,每一种不同数值,有多少:

  例如: SELECT val, COUNT(val) FROM tablename GROUP BY val

- Group by一个常见用法,查询学生总成绩:

  例如: 一张表scored,有学生ID(sid), 科目ID(cid), 成绩(val)

  SELECT sid, sum(val) FROM scored group by sid

 

4. 避免在字段中定义允许为NULL,会影响查询效率。

 

5. 在SELECT语句前面加EXPLAIN,可以查看查询语句使用了几个索引。

 

6. 在命令模式下,在SELECT语句后面加 LIMIT 1 \G 可以更方便地查看记录。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics