用left join 很快就可以出来查询的数据。
但是改成full join 就很慢。等个十几分钟都执行不完。不知道是数据库还是查询语句的问题。oracle的数据库。
希望大家能给点建议。有必要的话我可以把查询语句贴出来。
但是改成full join 就很慢。等个十几分钟都执行不完。不知道是数据库还是查询语句的问题。oracle的数据库。
希望大家能给点建议。有必要的话我可以把查询语句贴出来。
解决方案 »
- oracle存储过程加密如何解密?
- Oracle SQL*Loader时出现同一个数据文件一些记录导入成功,一些失败
- 多字段的行转列查询?
- imp-00085:指定的多个输入文件为无界导出文件!? 是我exp时候出错了吗?
- 一个SQL语句在oracle下检索不出来结果!
- 一个对我比较难的sql查询,大家来看看。
- 我在用正版的oracle安装时,在98和2000下点击setup.exe, 程序启动一下,马上又自动终止
- oracle如何启动
- 请问如何在ORACLE8中增加任务?
- 郁闷呀!请问大家心情不好时!用什么办法解决!........来者有分!!
- PL/SQL中循环不满足条件怎么跳出当前循环继续
- 找出层次超过1的这递归层数据,求sql
如果不是需求必要,使用其他方法看看
非常感谢。我觉得也是很有这个可能,只是我查的表是这样子的 (select *........) A full join (select *......) B 查出来的A 和 B 都是很少的数据量了。只是得到 A 和 B 的时候查询的数据量比较大。这个执行的时候 是先 查出来 A 和 B 然后 full join 匹配的话,按照我的理解不会很慢。
两个表都是10000条数据 那么就是10000*10000
select A.地区,A.num1,B.num2,(A.num1+B.num2) from (select 地区,count(*) as num1 from (select case when IP地址 between 184025089 and 184549375 then
省略。。
else
'其他'
end 地区 from
(select d.serialnumber as 序列号,
省略。'yyyy-mm-dd hh24:mi:ss') as 最后激活时间
from device d
left join devicepreconfig dp on d.serialnumber = dp.serial_number
where (dp.rgtype = 0 or dp.rgtype = 1) and d.deleted = 0
) tb ) group by 地区) A
left join
(select 地区,count(*) as num1 from (select case when IP地址 between 184025123 and 1845493455 then
省略。。
else
'其他'
end 地区 from
(select d.serialnumber as 序列号,
省略。'yyyy-mm-dd hh24:mi:ss') as 最后激活时间
from device d
left join devicepreconfig dp on d.serialnumber = dp.serial_number
where (dp.rgtype = 0 or dp.rgtype = 1) and d.deleted = 0
) tb ) group by 地区) B
on A.地区=B.地区
()A full join ()B on ...因为A表单独查只有10条数据,B表也只有10条,然后 full join 就一直执行。。因为对这个不熟,就觉得这个不合逻辑,也没有其他的什么思路。就理解不了了。但是(~~~~~~~) A ~~~~~~~执行可能要检索几十万数据吧。就是不知道可能的错误点会在哪里。
可以以构造的所有地区为左表 来关联数据 不一定非要用full join 关联出来的大半数据都多余的 没必要了..