oracle 多表查询速度太慢.求帮我优化一下select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxiwhere tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH or tb_ajjbxx.QTRYXXSLBH=tb_sarjb

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 03:11:32
oracle多表查询速度太慢.求帮我优化一下selectjbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMCfromtb_jbjxx,tb_

oracle 多表查询速度太慢.求帮我优化一下select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxiwhere tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH or tb_ajjbxx.QTRYXXSLBH=tb_sarjb
oracle 多表查询速度太慢.求帮我优化一下
select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxi
where tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH or tb_ajjbxx.QTRYXXSLBH=tb_sarjbxx.SARJBXXID or tb_sarjbxx.XXLYYWID=tb_xyr.XYRLYYWID
or tb_chengbaoxinxi.XXLYYWID=tb_ajjbxx.XXLYYWID and tb_jbjxx. like '东城建国%';
查询出来结果都是同一条数据,一直在循环.统计一下数量多少怎么加

oracle 多表查询速度太慢.求帮我优化一下select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxiwhere tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH or tb_ajjbxx.QTRYXXSLBH=tb_sarjb
你写表关联条件的时候使用了 OR
那就是说任何一个条件满足就会被检索出来,所以产生大量笛卡尔集(就是重复数据)
那么5表查询就会产生(tb_jbjxx的数据件数* tb_ajjbxx的数据件数*tb_sarjbxx的数据件数*tb_xyr的数据件数*tb_chengbaoxinxi的数据件数)件数据.
所以应该把表关联的条件修改为 AND
修改后SQL文如下:
select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC
from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxi
where tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH
AND tb_ajjbxx.QTRYXXSLBH=tb_sarjbxx.SARJBXXID
AND tb_sarjbxx.XXLYYWID=tb_xyr.XYRLYYWID
AND tb_chengbaoxinxi.XXLYYWID=tb_ajjbxx.XXLYYWID
AND tb_jbjxx.like '东城建国%';
如果你想要的是满足任何一个条件就要检索出来的话,那么一定要有一个主表,
就是查询主表的所有信息,再用其他表的字段和主表关联,有数据显示,没有数据不显示
分析你的SQL文,我推测tb_ajjbxx表是主表的概率比较高,那么SQL文的修改如下:
select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC
from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxi
where tb_ajjbxx.JBJXXSLBH = tb_jbjxx.JBJXXID(+)
AND tb_ajjbxx.QTRYXXSLBH = tb_sarjbxx.SARJBXXID(+)
AND tb_ajjbxx.XXLYYWID = tb_chengbaoxinxi.XXLYYWID(+)
AND tb_sarjbxx.XXLYYWID = tb_xyr.XYRLYYWID
AND tb_jbjxx.like '东城建国%';
--1)where条件的顺序修改了,为了提高效率
--2)where条件中=号左右内容部分交换了,为了增强可读性
--3)增加外关联符号(+)
最后,关于多表关联,表关联条件必须使用"AND"关键字,否则无效.
用你做成的SQL文检索,哪怕5个表都只有10条数据也会检索出1万件结果,如果各个表数据超过100件,你的检索结果集会是天文数字.如果我的回答没有直接解决问题,

oracle 多表查询速度太慢.求帮我优化一下select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC,JBDWMC from tb_jbjxx,tb_ajjbxx,tb_sarjbxx,tb_xyr,tb_chengbaoxinxiwhere tb_jbjxx.JBJXXID=tb_ajjbxx.JBJXXSLBH or tb_ajjbxx.QTRYXXSLBH=tb_sarjb oracle中查询时间查询出date为2010年1月8日的所有记录.date列为date类型.谁帮我写一下 水准仪怎么快速精确调平,求行家指点,我的速度太慢了 我写作业的速度太慢了,怎么办? 我的作业速度太慢了,怎样才能提高啊? 看书速度太慢怎么办? 孩子做作业太慢了,怎样帮他提高速度? oracle中cbo 是什么意思,能不能帮我解释一下急,谢谢 请帮我查询答案 我儿子今年8岁,已经上一年级了.可是认字的速度太慢 怎么办?认字速度超慢 怎么提高书写速度和提高速度以后的正确率呢?我答卷太慢了.、尤其是语文.怎么办呢?我现在上初中.希望大家可以帮我一下.谢谢!如果有好的建议.我可以追加悬赏. oracle 查询出的数据,把不足十位的数字前面补充0我在查询一个表的数据时,希望对一个NUMBER型字段的数据进行格式化,把不足十位的数字前面补充0 . 怎样提高回家做作业的速度?我做作业精益求精,就是速度太慢. oracle 当中,比如说 A.id(+)=B.IDD还有谁能给我推荐一本关于“plsql 查询语言”的教程啊,我要一个简单的和一个全书类型的,初次接触ORACLE ,请大家多关照啊.还有谁能给我推荐一本关于“plsql 查询 Oracle数据库中如何查询一个用户A下面所有的表的信息 我背书老是太慢 看书速度太慢,要怎么提升 小孩子写作业速度太慢怎么办?