2011-01-31 140 views
1

我想知道是否有人可以向我解釋何時使用子查詢以及何時使用連接。例如子查詢或加入?

我有這個疑問:

SELECT * from contacts where id in (select contactId from contactgrouplink where groupId = 1);

將受益是一個參加過這個子查詢什麼?

+0

[Subqueries vs joins](http://stackoverflow.com/questions/141278/subqueries-vs-joins)可能的副本 – 2011-01-31 10:00:48

回答

0
select * from contacts x, contactgrouplink y where x.id=y.contactId and y.groupId=1 

使用EXPLAIN 每個這些查詢的前只是......看看做什麼的查詢!

+0

嗯,這個查詢在做什麼(我喜歡它BTW)。它是一個連接,還是不同的東西? – Hailwood 2011-01-31 09:36:35

+1

我不知道它是什麼,我不看着名的名字和標準bla bla ...我做了一個查詢,然後測試它1000次,直到我找到最好的和fastes的解決方案...像這樣一個幾乎所有querys工程最好...是它的某種加入表的別名! duno某人讀過書會向你解釋! :P我基於體驗而不是書本! :D – FeRtoll 2011-01-31 09:41:34

0

做一個講解,我的經驗法則是嘗試,因爲這意味着在外部SQL語句中的每一行,以擺脫依賴的子查詢,查詢是執行。此外,您可以嘗試將其作爲連接來實現,並查看每個版本將檢查多少行並從那裏進行調用。

0

據我所知,子查詢是連擊而不是連接。 我也使用子查詢Becoz「加入」是影響性能。 (根據我的Sql首選項)