1)大表变小表,小表再连接。(但是MS SQL 会自动分析执行计划,并且如视图,也会被还原为语句,一起被分析。)
如果表有where条件,先对表使用where来筛选出小表。再进行连接。连接时,小表去join大表。
参见:[color=red]http://lanse.iteye.com/blog/897873[/color]
2) =或exists 比 in 效率高
另外,
首先两个表的连接字段都要有索引。
然后用exists 就可以了。
比如:
select * from min_tab a exists (select 1 from max_tab b where a.id = b.id)
出来的就是符合小表和大表的交易的小表记录
如果表有where条件,先对表使用where来筛选出小表。再进行连接。连接时,小表去join大表。
参见:[color=red]http://lanse.iteye.com/blog/897873[/color]
2) =或exists 比 in 效率高
另外,
首先两个表的连接字段都要有索引。
然后用exists 就可以了。
比如:
select * from min_tab a exists (select 1 from max_tab b where a.id = b.id)
出来的就是符合小表和大表的交易的小表记录