今天我在SQL Server中學到了一個叫做INNER LOOP JOIN
的東西。什麼時候應該使用INNER-LOOP-JOIN而不是INNER JOIN
這是什麼意思? (谷歌沒有幫助..或者我應該說...有關它的博客文章有點......技術,並且正在讓我感到頭疼)。
此外,什麼是一些常見的情況下,使用INNER LOOP JOIN
比標準INNER JOIN
好主意?
今天我在SQL Server中學到了一個叫做INNER LOOP JOIN
的東西。什麼時候應該使用INNER-LOOP-JOIN而不是INNER JOIN
這是什麼意思? (谷歌沒有幫助..或者我應該說...有關它的博客文章有點......技術,並且正在讓我感到頭疼)。
此外,什麼是一些常見的情況下,使用INNER LOOP JOIN
比標準INNER JOIN
好主意?
LOOP |哈希| MERGE是連接提示 指定查詢中的連接應使用循環,散列或合併。使用LOOP | HASH | MERGE JOIN強制執行兩個表之間的特定連接。 LOOP不能與RIGHT或FULL一起指定爲連接類型
您應始終使用INNER JOIN。讓查詢優化器決定是否要執行LOOP,MERGE或HASH連接。你會發現在幾乎所有情況下,優化器都會做出更好的判斷。哪一個將被使用,什麼時候可以從我的介紹http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans中找到。
引言「讓查詢優化器決定(原文如此)」..這是如何(bascially)決定的?通過統計? –
不同的連接類型針對不同的查詢語義進行了優化,是的,這些主要基於統計/基數,還有其他因素,例如連接的一側是否比另一側大得多,每側的輸入的連接被排序等等。我和其他人一起......如果關於這個的博客文章正在引起你的注意,那麼讓你的優化器決定,直到你掌握了連接類型*和*覺得你比優化器更聰明。 –
@ pure.Krone。你是對的 。儘管我不知道extact算法,但我知道它是帶下劃線的表和索引的統計函數,爲加下劃線的對象創建文件組的方式,服務器的核心數(MAXDOP)以及許多其他因素。如果你想深入挖掘,我建議你閱讀Connor Cunningham的博客,他是MS SQL Core的首席架構師。 – Ash