2011-02-10 135 views
0

我正在存儲一個簡單的標記關係,我想知道什麼是更好的方法來刪除標記?MySQL從數據庫中刪除行

兩種方式我所知道的:

  1. SELECT標記FROM content_tags WHERE 的content_id = 10
  2. 使用PHP與 提供了新的標籤和比較的結果,如果有 任何標記從數據庫 結果是不是在新的標籤, 該標記運行刪除查詢
  3. 標籤其餘要麼是新 或已經存在,所以我用INSERT INTO content_tags ...對重複 密鑰更新

或者乾脆:

  1. DELETE FROM content_tags FROM標籤 WHERE的content_id = 10
  2. 將每個標籤(無需使用ON DUPLICATE KEY UPDATE在這裏爲 此內容的標籤爲 此時已刪除)

我目前正在做第一種方法,但第二種方法似乎沒有什麼麻煩。但我不確定是否以這種方式使用刪除「不好」或效率低下。或者如果你有更好的方法可以隨意分享。

回答

0

您可以調整第一種方法,也不要在已存在的標籤上進行插入操作。但它可能(也可能會)會導致更多的查詢,然後第二種方法,特別是如果你將這些插入語句組合在單個查詢中。

//小例子:)

INSERT INTO content_tags 
(content_id, tag_id) 
VALUES 
(1,1), 
(1,2), 
(1,3); 
+0

我更擔心刪除的記錄,也許你誤解我了?例如,假設您將tag_id 1,3,5,7,9存儲爲content_id 10.現在我要更新標籤並刪除3和5,因此tag_id現在爲1,7,9。所以我當然需要刪除tag_id 3和5,但我需要使用php來比較它們,只需刪除所有標記1,3,5,7,9然後插入1,7, 9代替。我只是想知道這是否對數據庫不利? – Joker 2011-02-10 17:38:54