欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于sql中and连接的一些疑问解决办法

更新时间: 2014-01-05 02:31:01 责任编辑: Author_N1

 

关于sql中and连接的一些疑问
select a.cstm_id,a.cstm_name,a.sex,a.nation,a.Birthday,a.Edu_history,a.Marry_state,a.Work_type from insu_cstm a,cstm_pol b where a.Inst_code='410101901' and a.cstm_id=b.cstm_id and a.Sex='2' and a.Nation='2' and a.Edu_history='2' and a.Marry_state='2' and a.Work_type='2' and a.cstm_id in (select cstm_id from cstm_pol where app_date>='2007-01-01' and app_date<='2009-01-01' group by cstm_id having count(cstm_id)>=2) and a.Birthday>='1953-01-01' and a.Birthday<='1980-01-01'

这个sql写的太长了。现在我的疑问是and连接的所有条件中。oracle在处理过程中肯定又先后的。。其中一些条件比如and a.cstm_id in (select cstm_id from cstm_pol where app_date>='2007-01-01' and app_date<='2009-01-01' group by cstm_id having count(cstm_id)>=2)这个条件。。这个条件的存在使这个句子效率低下的很。


如果把这个条件放到第一个会不会变快呢。。。另外,能帮忙优化句子的高手不妨帮忙优化依稀啊

--参考方法--
顺序没有关系,优化器会自动选择最优的方式。

既然子查询是性能恶化的原因,那么这个子查询select cstm_id from cstm_pol where app_date>='2007-01-01' and app_date <='2009-01-01' group by cstm_id having count(cstm_id)>=2本身的效率如何? 子查询的结果集大不大? 是否要考虑在app_date和 cstm_id上分别建索引?

主查询语句中的这么多条件字段,有没有字段上存在高效的索引?
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:31:01
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10799/
本文WWW.DOC100.NET DOC100.NET版权所有。