两个mysql表,如A和B
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 :(得分: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
子句时,首先将A中的每个记录连接到B中的每个记录,然后将一些记录过滤掉。所以你正在构建一个庞大的桌子作为中间步骤。
当您使用ON
子句时,在发生连接时会过滤掉不匹配的记录。
答案 1 :(得分: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