举个例子说明,两张表:一张表是员工表,字段:员工号(主键),员工姓名,员工年龄。
另一张表是工资表: 字段:员工号,月份(两个字段的复合主键),工资如果两张表都是百万数据量,问:如何实现不用sql的left join 而是分别查询两张表,实现查找年龄大于20,工资大于5K的查找
另一张表是工资表: 字段:员工号,月份(两个字段的复合主键),工资如果两张表都是百万数据量,问:如何实现不用sql的left join 而是分别查询两张表,实现查找年龄大于20,工资大于5K的查找
解决方案 »
- mysql卸载之后怎么重新安装出错啊?
- 这段代码运行不行呢
- 这个查询可以优化吗?
- 急!Linux下PostgreSQL数据库备份(pg_dump 等)脚本如何写啊?
- 取出随机记录,如果根据某字段值来确定概率
- mysql连接8小时问题?非常抱歉没分可给
- 请教mysql存储过程中涉及到limit,该如何写?
- windows上安装postgresql 及EMSmanager2连接简明教程
- 画了一个EER model,但是导出的SQL脚本有语法错误
- mysql 查询字符串=数字,比如name=880725279310348288
- c3p0连接池配置文件中maxIdleTime小于数据库的timeout时间,为什么还会出现了使用了数据库已经超时的连接
- SQLyog连接mysql错误号2003
抱歉,我没说清楚,另外还需要分页显示,以一个表为主表,这个问题我看来好像无解,只能用LEFT JOIN ,我想很多公司都不允许用关联查询,那他们遇到类似问题怎么解决
from 员工表 a
where a.年龄>20 and a.员工号 in (select b.员工号 from 工资表 b where b.工资>5k;)楼主的数据表应该是拆分了的吧
嗯。我详细说下吧:
先说你给的这个sql,问题在与in 里面的数据可能会太大了,几十上百万都有可能,所以这条sql 还是不能彻底解决问题再说具体情况
其实是这样的,实际数据表的情况和我举的例子有差别,但举的例子基本可以说明问题
就是我在使用pagehelper插件的时候发现 插件自动count了数据总条数,但自动count的时候如果存在左关联其它表的情况,主表20万条数据,左表40多万条数据就有2s 的查询时间了,这肯定很过分。
我先想的是,拆分sql 不用左关联查询,但是存在类似题目上给的查询条件。所以拆分sql 解决不了
后来一直找问题解决办法,发现pagehelper 的5.0.4版本可以自己手写count 了,所以写了个sql 再存在如题类似条件下 再进行左关联。
这是折中解决问题了