当前位置:数据库 > Oracle >>

请教关于oracle数据库的sql语句太长的问题

请教关于oracle数据库的sql语句太长的问题。这边有个sql查询数据,随着数据量的增加,语句变得非常的长了。简写一下,就是 select * from table where 1=1 and status = 1 and ( id in (1,2,3,4……) or id in ( 101,102,103,…… ) ) .里面那个id in 的部分,因为in后面数据量过大,in会报错,所以做了分段处理,好了一段时间。 但现在数据量庞大到sql太长以至于报通信错误。这个有什么好的解决方法么?
答案:用子查询代替in()裏面的数据
比如吧101,102.。。。放到一个表裏面去
select *from table where id in(select Id from 新建的表)
这样也容易维护!!要是增加10*的时候就在新建的表裏面加入就可以了!!
其他:你不会用id在某段区间来判断吗?为什么非要写1=1呢 楼主,id in后面的部分是从哪里来的?有什么规则或者可以作为另外一个表保存吗?如果可以作为表,那么就用 in (子查询) 来实现。 1, 你可以把in后边的那些数据 保存到一个表里边。这样直接取表就可以了。
2,写动态sql 把in 后边的按照一定的规律 拼出来,这样太麻烦了。还是放在表里好了。 用临时表来解决,把导致长的字段做成临时表,主表与临时表关联实现查询 这个在11g 里好像解决了, 
一般做法是把这些数据插入临时表中, 再用表关联 

上一个:oracle数据库中数据表主键自动增长
下一个:大学里数据库课程设计,用oracle做一个简单的图书管理系统,我想是用jav...

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,