2012-12-14 37 views
0

兩個MySQL表像A和B如何固定在MySQL

emp_A(id,name,some_text)  PK is: id 

emp_B(sr_no,emp_id,loc,adrr) PK is: emp_id+sr_no 

emp_sr(sr_no,a,b)   PK is: sr_no 

我的表是這樣的連接查詢。我要去查詢像

select A.name, B.loc 
from emp_A, emp_B B 
where A.id=B.em_id 
and sr_no =123 

emp_A表有大約3L記錄 emp_B表有大約8L記錄。

我怎樣才能加快我的連接查詢?

請幫我嗎?

+0

你問如何使查詢更快?如果是這樣,請在查詢中提供'EXPLAIN'的結果。 –

回答

1

而不是WHERE,使用您的連接的ON條款。

select A.name, B.loc from emp_A 
    inner join emp_B B on A.id=B.em_id and sr_no =123 

如果您只使用一個WHERE條款,首先在每個記錄被加入到B中的每個記錄,然後一些被過濾掉。所以你正在建造一個巨大的桌子作爲中間步驟。

當您使用ON子句時,不匹配的記錄會在連接發生時被濾除。

1
Please try this 

select A.name, B.loc from emp_A A join emp_B B on(A.id=B.emp_id) join emp_sr C on (B.sr_no=C.sr_no) where C.sr_no = 123