就SQL语句的几个问题:
1. 为什么要用to_char(b.dep_id_from)=40等? 在查询中对字段使用函数会导致无法使用索引,对效率影响很大.
2. 使用and nvl(b.fluent_rf,0)=1必然导致索引无法使用,而必须使用全表扫描.能不能考虑设定fluent_rf的默认值为0,那就不需要用NVL来转换了
3. b和c之间采用的是左连接(and b.bat_code(+)=c.bat_code and b.bk_ext(+)=c.bk_ext),但是又定义了and b.bat_code = '123',这两者不可能并存的,你的逻辑是什么?
除了SQL语句之外,对数据量很大的表,建议采用分区表以提高效率.但是从你的语句来看,这个表用于查询的字段很乱,挺难定义索引的.