假有 A表 和B表数据量都是比较大 A表和B表是有关联的
那么是A表联B表查询快点
还是
独立查A表再独立查B表的效率快点?
为什么?

解决方案 »

  1.   

    何为独立查A表,再独立查B表?
    这和A表联B表查是不一样的操作啊!
      

  2.   

    楼主怎么纠结在这了就两个表的连接,假设是inner join,谁在前谁在后有关系么???至于left join或者 right join 表连接顺序不同,结果集可能不同的哦!
      

  3.   

    这个要看具体的SQL语句才好分析的.
    一般原则上是建议大表放前去关联小表.
    但非绝对,SQL查询优化器会自动选择最优的执行计划.
      

  4.   

    就是平时在工作中.大家都说联查会很慢.分了两次查询.我对这效率有点怀疑.
    假设
    A表有
    a1,a2,a3字段
    B表有
    b1,b2,b3字段
    a1和b1是一样的
    我现在要取
    a1,a2,a3字段(但这个数据如果在b表中有的,那么这个a3就用b3来代替)
    这样的情况.A表和B表查询得到结果快点
    先获取A表.再获取B表.(有条件可以直接查询出B表想要的数据)
    然后再程序里循环a表的集合.比较如果a.a1在b表中的集合有.就重新付值.其实那比表的关系.比这复杂一点.程序要想比较a1是否要在b1中的存在要很多循环和条件.
    我这简化了一下.
    就是这种情况.请问大家了解么?
      

  5.   

    你的意思是取 a1,a2,b3吗?
      

  6.   

    如果你能写出sql。你就把不同的sql写出来,让大家来讨论哪个sql效率更高!!如果写不出来就让写sql,然后在分析哪个效率会高点。
    select a1,a2,b3 from a left join b where a.a1 = b.b1
      

  7.   

    前面没仔细看这一句,然后再程序里循环a表的集合.比较如果a.a1在b表中的集合有.就重新付值.
    这样做肯定不行,我们的原意是a表如果where过滤一些记录,b表也where过滤一些记录后,
    再进行连接(不是程序控制),这样比两个表直接连接查询的效率高一些