举个例子说明,两张表:一张表是员工表,字段:员工号(主键),员工姓名,员工年龄。
                                      另一张表是工资表: 字段:员工号,月份(两个字段的复合主键),工资如果两张表都是百万数据量,问:如何实现不用sql的left join 而是分别查询两张表,实现查找年龄大于20,工资大于5K的查找

解决方案 »

  1.   


    抱歉,我没说清楚,另外还需要分页显示,以一个表为主表,这个问题我看来好像无解,只能用LEFT JOIN ,我想很多公司都不允许用关联查询,那他们遇到类似问题怎么解决
      

  2.   

    select a.员工姓名,a.年龄,(select 工资 from 工资表 where 员工号=a.员工号) as 薪资 
    from 员工表 a 
    where a.年龄>20 and a.员工号 in (select b.员工号 from 工资表 b where b.工资>5k;)楼主的数据表应该是拆分了的吧
      

  3.   


    嗯。我详细说下吧:
    先说你给的这个sql,问题在与in 里面的数据可能会太大了,几十上百万都有可能,所以这条sql 还是不能彻底解决问题再说具体情况
    其实是这样的,实际数据表的情况和我举的例子有差别,但举的例子基本可以说明问题
    就是我在使用pagehelper插件的时候发现  插件自动count了数据总条数,但自动count的时候如果存在左关联其它表的情况,主表20万条数据,左表40多万条数据就有2s 的查询时间了,这肯定很过分。
    我先想的是,拆分sql 不用左关联查询,但是存在类似题目上给的查询条件。所以拆分sql 解决不了
    后来一直找问题解决办法,发现pagehelper 的5.0.4版本可以自己手写count 了,所以写了个sql 再存在如题类似条件下 再进行左关联。
    这是折中解决问题了