使用MySql最佳化你的PHP程式

來源:互聯網
上載者:User

我們有時候會在投票系統中實現多項選擇,但是我們多數的做法是用一個迴圈來插入我們的資料,好像以下的情況:  
1 if (isset($_POST['ids'])) {
2
3   foreach($_POST ['ids'] as $id) {
4
5   $rs = mysql_query('INSERT INTO table_name(id) VALUES('.(int)$id. ') ';
6
7   }
8
9   }  但是這個做法是非常浪費資源的,而且這樣做很費時間,因為我們都知道在PHP程式中,最費時的是與資料庫通訊,所以我們盡量減少PHP與資料庫的通訊。那我們怎麼做才可以減少PHP查詢資料庫的次數呢?
  下面我們介紹一種方法:
  使用預存程序(MySQL5 only):
  我們可以使用預存程序來減少PHP與MySQL資料庫的通訊,怎麼做呢?
  首先我們可以建立一個預存程序:  
1 DELIMITER //
2
3   CREATE PROCEDURE insert_data(datas varchar(100))
4
5   BEGIN
6
7   DECLARE comma_pos INT;
8
9   DECLARE current_id INT;
10
11   svcs: LOOP
12
13   SET comma_pos = LOCAL(',', datas);
14
15   SET current_id = SUBSTR(datas, 1, comma_pos);
16
17   IF current_id <> 0 THEN
18
19   SET datas = SUBSTR(datas, comma_pos + 1);
20
21   ELSE
22
23   SET current_id = datas;
24
25   END IF;
26
27   INSERT INTO table_name(id) VALUES(current_id);
28
29   IF current_id = 0 THEN
30
31   LEAVE svcs;
32
33   END IF;
34
35   END LOOP;
36
37   END
38
39   //
40
41   DELIMITER ;  這個預存程序接受一個字串作為參數,這個參數是用,隔開的id,這是由於MySQL的預存程序並不支援數組,所以可以用這種方法類比數組。
  建立好這個預存程序之後,我們可以使用PHP來調用這個預存程序:  
1 if (isset($_POST['ids'])) {
2
3   $datas = implode(',', $_POST['$id']);
4
5   $rs = mysql_query('CALL insert_data('.$datas.')');
6
7   }  這樣我們就可以調用一次查詢就可以把幾條資料插入到MySQL中了,這樣可以減少PHP與MySQL的通訊,加快了PHP的運行速度。
  另外,預存程序還可以幫我們解決:
  1. 一致性:因為我們的資料庫一般不會只是給PHP來調用的,好像圖書館系統那樣,我們的MySQL資料庫還會給.NET來使用,但是每個程式都要寫一個很長的調用資料庫的查詢就變得非常麻煩了,所以我們也可以使用預存程序來解決多種語言調用資料庫時,不用重複開發SQL語句。
  2. 安全性:對於很多機密性較高的機構,好像銀行和軍事機密那樣,我們一般都是使用預存程序來限制程式對資料庫的高度訪問和修改,這樣就可以很好的保護我們的資料了!
  3. 高效性:一個大型的程式不可能是一個人來完成的,所以一個團隊開發的時候避免重複編寫調用資料庫的查詢,使用預存程序也是一個非常不錯的方案。
  因為預存程序可以實現一般的邏輯運算,所以有時候我們把資料庫的資料查詢出來,再用PHP來判斷資料是否合適這樣方法是非常不好的,我們可以把一些簡單的邏輯運算分給MySQL來處理,這樣會大大提高程式的效率的!因為預存程序是MySQL5的新功能,所以我們應該好好的學習一下這個強大的功能!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.