mysql在A表中存在B表中不存在的数据sql优化

都知道A表中存在B表中不存在可以使用子查询解决,反正子查询千遍一律,写就完事

举手:

A表中有pid(主键),value(值)两个字段

B表中有cate_id(分类id),pid(A表关联数据),没有主键

结果:B表中cate_id为15的数据A表中不存在

 

就上面问题:反之得A表中所有数据,只要B表存在且cate_id为15的数据都不显示

子查询:

select * from A where (select count(*) from B where cate_id =15 and A.pid =B.pid) = 0

这样效率是不是低下呢为什么

这样也其实不一定低下,子查询使用的迪尔卡积来计算的

如果B表数据关联的越多到时候子查询的效率就体现了,前期子查询的效率可能体现不出来(并没有实际测试,但是使用过纯粹数据做过测试)

那么使用你们日常所觉得关联查询高于100%高于子查询的死亡回答怎么写呢、

select * from A left join B on B.cate_id =15 and b.pid=A.pid where b.pid  IS  NULL

你可能感兴趣的:(mysql)