看板 PHP 關於我們 聯絡資訊
※ 引述《newbiegg (威爾)》之銘言: : 假設有一個簡單的 Table 只有兩個欄位: ID (unique), Date : (當他是一堆會員的最後上站日好了) : 程式常常需要去修改 Date 的值 : 請問 php 對 MySql 讀寫時,以下方案: : A. 每次不管是要"新增"或是"更新",都直接用以下方式刷新 : 1. DELETE FROM TABLE WHERE ID = 'xx' : 2. INSERT INTO TABLE : B. 每次都做以下判斷 : 1. 先 SELECT FROM TABLE 檢查,如果 ID 尚未存在(第一次上站) --> INSERT : 2. 如果 ID 已經存在一筆資料 --> UPDATE TABLE : 以上兩種處理方式何者較佳? 如果是儲存「會員最後上站日」,表示您的這兩個欄位都不是 AUTO_INCREMENT 欄位。假設有 transaction 的話,兩種差不多,如果沒有 transaction 的話,我 會比較偏好第二種方法,但還是會儘量寫在一個 SQL Statement 裡面來解決。 您的第二種方法比較不會有遇到 DUPLICATE KEY 塞不進去的風險 (雖然對一般 會員系統來說這種風險其實並不算高) : 假設資料量變得非常巨大,效能比較上又是如何? 因為您用 MySQL ,所以建議您可以參考一下 MySQL 的特異功能 INSERT ON DUPLICATE KEY UPDATE 的方法: INSERT INTO TABLE (ID) VALUES ('xx') ON DUPLICATE KEY UPDATE ID = 'xx'; http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html 至於資料量變得非常巨大,要看您對「巨大的定義」是有多大,假設以您的 case 是存會員資料,上述方法應該夠用了。因為您的會員總不會有幾千萬人吧... :P -- The Internet: where men are men, women are men, and children are FBI agents. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.104.63
arrack:好方式 04/24 14:14
※ 編輯: roga 來自: 61.220.104.63 (04/24 14:29)
s861175:推MYSQL特異功能 04/24 23:49