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

关于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上分别建索引?

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