假設我有兩個表基本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