2011-02-10 140 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