假设我有两个表基本SQL INSERT语句的方法
- 客户(ID INT,用户名VARCHAR)
- 订单(CUSTOMER_ID INT,order_date的日期时间)
现在我要插入根据Customer表中可用的客户信息进入Order表。
有几种方法可以解决这个问题。
首先 - 我可以将客户信息查询到变量中,然后在INSERT语句中使用它。
DECLARE @Customer_ID int
SELECT @Customer_ID = id FROM Customer where username = 'john.smith'
INSERT INTO Orders (customer_id, order_date) VALUES (@Customer_ID, GETDATE())
第二种方法是使用INSERT和SELECT查询的组合。
INSERT INTO Orders (customer_id, order_date)
SELECT id, GETDATE() FROM Customers
WHERE username = 'john.smith'
所以我的问题是,哪一个更好的方式来进行速度和开销,为什么?我知道如果我们从客户表中获得了很多信息,那么第二种方法要好得多。
p.s.我在其中一次技术采访中被问到这个问题。
你是如何回答面试中的问题的? – 2011-06-14 22:17:38
我给了他们一个和你一样的答案。只是想获得每个人的意见。谢谢回复。 – 2011-06-15 03:15:25