回覆列表
  • 1 # 心動零壹

    應用程式的最佳化通常可分為兩個方面:原始碼和SQL語句。由於涉及到對程式邏輯的改變,原始碼的最佳化在時間成本和風險上代價很高,而對資料庫系統性能的提升收效有限。 merge join第一個步驟是確保兩個關聯表都是按照關聯的欄位進行排序。如果關聯欄位有可用的索引,並且排序一致,則可以直接進行merge join操作;否則,SQL Server需要先對關聯的表按照關聯欄位進行一次排序(就是說在merge join前的兩個輸入上,可能都需要執行一個Sort操作,再進行merge join)。 兩個表都按照關聯欄位排序好之後,merge join操作從每個表取一條記錄開始匹配,如果符合關聯條件,則放入結果集中;否則,將關聯欄位值較小的記錄拋棄,從這條記錄對應的表中取下一條記錄繼續進行匹配,直到整個迴圈結束。 在多對多的關聯表上執行merge join時,通常需要使用臨時表進行操作。例如A join B使用merge join時,如果對於關聯欄位的某一組值,在A和B中都存在多條記錄A1、A2...An、B1、B2...Bn,則為A中每一條記錄A1、A2...An,都必須在B中對所有相等的記錄B1、B2...Bn進行一次匹配。這樣,指標需要多次從B1移動到Bn,每一次都需要讀取相應的B1...Bn記錄。將B1...Bn的記錄預先讀出來放入記憶體臨時表中,比從原資料頁或磁碟讀取要快。

  • 中秋節和大豐收的關聯?
  • 與古代人物有關的成語?