PHP查詢MySQl資料庫的效率小記

2021-08-27 07:01:01 字數 1820 閱讀 5629

1. mysql資料庫的連線和關閉

根據w3cschool上的描述:

php 指令碼一結束,就會關閉資料庫連線。如需提前關閉連線,請使用 mysql_close() 函式。

現在做php開發,通常會用到一些框架,一次指令碼執行,對資料庫的操作不一定是在乙個函式裡完成的。這時候頻繁的連線和關閉,會降低執行效率。

為此特意做了乙個實驗,**如下:

$host = '127.0.0.1';

$username = 'root';

$password = '';

$database = 'test';

$time = new rumtine();

echo '插入100條資料,每次插入連線一次資料庫,插入後關閉連線

'; $time->start();

for($i=1;$i<=100;$i++)')";

$con = mysql_connect($host, $username, $password);

mysql_select_db($database, $con);

mysql_query($query1);

mysql_close();

}$time->end();

echo $time->spend().'

';

echo '插入100條資料,每次插入連線一次資料庫,不關閉連線。

'; $time->start();

for($i=1;$i<=100;$i++)')";

$con = mysql_connect($host, $username, $password);

mysql_select_db($database, $con);

mysql_query($query1);

}$time->end();

echo $time->spend().'

';

執行五次的結果分別是:

每次操作後關閉連線: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 可以更方便地檢視記錄。

PHP連線 查詢MySQL資料庫

conndb.php link mysqli connect localhost root password database 連線資料庫 mysqli select db link,database 選擇資料庫 mysqli query link,set name gb2312 index.php...

PHP連線並查詢MySql資料庫

header 函式向客戶端傳送原始的 http 報頭,解決中文亂碼。header content type text html charset utf 8 connection mysqli connect 主機名 mysql使用者名稱 mysql密碼 資料庫名 我在自己電腦測試,所以主機名可以是l...

mysql資料庫查詢作業 mysql資料庫查詢練習

建立四張資料表 學生表student 學號,姓名,性別,出生年月日,所在班級 課程表course 課程號,課程名,教師編號 成績表score 學號,課程號,成績 教師表teacher 教師編號,教師名,教師性別,出生年月日,職稱,所在部門 新增資訊 學生表 insert into student v...