表A数据百万以上,表B中50万
exists方式:
select * from talbe A where exists(select 1 from table B where b.Id = A.id)
查询时间两分钟以上
全连接方式select a.* FROM TABLE A,TABLE B WHERE A.ID = B.ID
查询时间1秒左右。
我一直以为exists的效率有优于全连接。请教下原理,为啥是这样的呢?
exists方式:
select * from talbe A where exists(select 1 from table B where b.Id = A.id)
查询时间两分钟以上
全连接方式select a.* FROM TABLE A,TABLE B WHERE A.ID = B.ID
查询时间1秒左右。
我一直以为exists的效率有优于全连接。请教下原理,为啥是这样的呢?
如果子查询的表大,则使用EXISTS,如果子查询表小,则使用IN效率高。全连接进行是与IN相同的HASH连接。