我应该使用插入选择还是只使用插入循环?

时间:2009-08-14 13:40:28

标签: php mysql bulkinsert

我使用以下答案提取了一个用户名列表:

how to optimize mysql query if i have too many OR operators in my query?

现在我有另一个问题。我有一个只有2列的朋友表,请求者和伙伴都形成一个复合主键。

现在假设我使用上述SO问题为给定用户提供了一系列的facebook好友。

我如何在我的网络应用中自动成为朋友?

这意味着如果我有一个名为'usera'的用户有5个真正的朋友。我需要执行10个插入语句。

例如:friendA,usera和usera,friendA,以便friendA被反映为usera的朋友。

我知道插入选择是有效的。但不幸的是,这些朋友的用户名列表是通过一个PHP数组值使用IN子句获得的,正如我上面提问的SO成员所建议的那样。

那我该怎么办?

我应该

a)遍历名称并为每个步骤执行2个插入语句?

b)使用insert select?但是怎么做呢?

我的数据库是这样设计的:

1个表名为user with usernames,fb_uid,其中用户名是主键,fb_uid可以为空。

1个名为friends的表,其中一列名为requestor,另一列名为buddy。两列都形成一个复合键。

当您拥有以下数据时,我的网络应用程序中的2个人(usera,userb)之间建立了友谊:(usera,userb)和friends表中的(userb,usera)。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以随时进行批量插入。

INSERT INTO friends (user_id, friend_user_id) VALUES (1, 2), (2, 1)

答案 1 :(得分:0)

我会选择INSERT SELECT,你可以找到detailed syntax here