2015-10-28 48 views
-3

如果我有三個表說A,B和CJoin如何在SQL中工作?

A是加入到B, B被加入到C

然後加入A到C需要它?

我試過這與聯接A到C,因爲這個我的查詢性能增加,但我不明白我的查詢性能如何增加?

如果你能解釋爲什麼A到C加入會提高性能,這將是非常有用的嗎?

有3個表格。 AWARD_MEMBERHOUSEHOLD_MEMBERCONDITIONALITY_GROUP 這是我加入了他們,

AWARD_MEMBER.HH_MEMBER_ID = HOUSEHOLD_MEMBER.HH_MEMBER_ID AND 
HOUSEHOLD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID AND 
AWARD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID 

AWARD_MEMBER as A,HOUSEHOLD_MEMBER as BCONDITIONALITY_GROUP as C 所以AWARD_MEMBER.HH_MEMBER_ID = CONDITIONALITY_GROUP.HH_MEMBER_ID聯接真正需要查詢?如果是,那麼它是如何工作的?

感謝, 桑迪普

+0

您的代碼在哪裏? – Marusyk

+0

不能在沒有看到表格的查詢和定義的情況下回答您的問題。諸如索引,「ON」子句和正在檢索的列的列表對性能有很大的影響。 –

回答

0

既然你不提關於表結構我不能說爲什麼它正在發生的事情(提高性能比較,同時加入A至C)。

但是,如果您正在尋找性能優化,則應查看EXPALIN關鍵字。

EXPLAIN是在您的處置最有力的工具,理解一個和優化麻煩的MySQL查詢

  • EXPALIN

    EXPALIN返回一行信息在SELECT語句中使用的每個表這些是由EXPLAIN生成的輸出列。 enter image description here

explain輸出的type列描述如何聯接表。

下面的列表介紹了連接類型,從最好的 類型責令最壞

  • 系統
  • 常量
  • eq_ref
  • 裁判
  • 全文
  • ref_or_null
  • index_merge
  • unique_subquery
  • index_subquery
  • 範圍
  • 索引
  • ALL

EXPLAIN輸出中的 「rows」 列是數量 的估計需要的行被檢查。

無論查詢將實際需要檢查 每行的表真的取決於訪問計劃(顯示在其它列 解釋輸出。例如,索引範圍掃描操作不 已查看每一行,只查看特定索引範圍內的行。 但是,全掃描操作將查看錶中的每一行)。


通過觀察rowstype你可以很容易理解爲什麼它得到 當你加入(A至C)的改善。

注意:EXPLAIN EXTENDED - 顯示有關其執行查詢方式的其他信息。

希望這會有所幫助..