2014-11-21 54 views
-4

我是SQL Server的新手。我不清楚索引如何幫助加入SQL Server。當我們連接兩個表時,索引是如何發生的,它以哪種方式執行查詢?是否有任何鏈接要讀出來瞭解這一點?索引如何幫助加入SQL Server

我理解的where子句是如何工作的,由該VIDEO ..

是否有任何其他的視頻或文章鏈接,瞭解有關加入VS指數

+2

你有沒有聽說過谷歌?不知道爲什麼人們運行堆棧溢出。我不知道如何穿上我的褲子。有人能幫助我嗎? MSSQL有一個完整的MSDN站點來幫助你解決這個問題。 – Jaques 2014-11-21 08:46:31

+3

@Jaques:在MSDN中查找*相關的*文章遠不是微不足道的,而且一個新手必須透徹地想出正確的谷歌搜索才能登陸相關文章。指引他寫正確的文章比要求他自己搜索要好得多。 – 2014-11-21 08:58:05

+1

然後有 - 咳嗽書。在這種情況下爲傻瓜SQL。但是,嘿,今天的孩子不想用他們的大腦。只要給我所有的知識,所以我不必去想。態度很好。 – TomTom 2014-11-21 08:59:47

回答

3

有三種方法可以做到聯接:

  1. 嵌套循環

隨着嵌套循環之一的連接側被掃描,而另一側被探查(鑰匙尋找)。如果有一個指標可以利用,這個調查可以得到巨大的提升。見Understanding Nested Loops Joins

  • 哈希聯接
  • 哈希掃描一個的連接側,在內存中構建hash table,而掃描另一側,並在散列相匹配的鑰匙表。沒有索引有利於散列連接。請參閱Understanding Hash Joins

  • 合併聯接
  • 合併加入需要雙方進行排序。他們通過同時迭代兩邊來工作,並依靠排序順序保證來確定密鑰是否匹配,而不需要向前看或保持狀態。爲了提供排序保證,可以利用索引。見Understanding Merge Joins

    我建議你閱讀Understanding how SQL Server executes a queryHow to analyse SQL Server performance。一般來說,您應該設計數據模型和查詢,以便在連接之前進行過濾。如果你需要加入大數據集索引可能會有幫助,但戰鬥已經失敗。

    0

    在查找視頻之前,您必須閱讀至少1本書!

    使用索引,服務器可以比掃描所有記錄(在表格中有許多行並且結果很少的情況下)快得多地找到對應的行。例如,如果該表有10,000,000行,並且查詢必須返回20行 - 使用索引,服務器可以讀取平均值〜20 MB的數據(10M * 32位索引的50%)而不是1500 MB(例如10M行的50% * 300字節)。