2011-06-30 365 views

回答

21

LOOP |哈希| MERGE是連接提示 指定查詢中的連接應使用循環,散列或合併。使用LOOP | HASH | MERGE JOIN強制執行兩個表之間的特定連接。 LOOP不能與RIGHT或FULL一起指定爲連接類型

您應始終使用INNER JOIN。讓查詢優化器決定是否要執行LOOP,MERGE或HASH連接。你會發現在幾乎所有情況下,優化器都會做出更好的判斷。哪一個將被使用,什麼時候可以從我的介紹http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans中找到。

+0

引言「讓查詢優化器決定(原文如此)」..這是如何(bascially)決定的?通過統計? –

+1

不同的連接類型針對不同的查詢語義進行了優化,是的,這些主要基於統計/基數,還有其他因素,例如連接的一側是否比另一側大得多,每側的輸入的連接被排序等等。我和其他人一起......如果關於這個的博客文章正在引起你的注意,那麼讓你的優化器決定,直到你掌握了連接類型*和*覺得你比優化器更聰明。 –

+0

@ pure.Krone。你是對的 。儘管我不知道extact算法,但我知道它是帶下劃線的表和索引的統計函數,爲加下劃線的對象創建文件組的方式,服務器的核心數(MAXDOP)以及許多其他因素。如果你想深入挖掘,我建議你閱讀Connor Cunningham的博客,他是MS SQL Core的首席架構師。 – Ash

8

你所指的是join hint。像其他提示一樣,只應將連接提示指定爲最後的手段,因爲大部分時間SQL服務器都會選擇正確的算法。一篇好文章解釋一些是this

相關問題