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

请教关于oracle数据库的sql语句太长的问题。这边有个sql查询数据,随着数据量的增加,语句变得非常的长了。简写一下,就是select*fromtablewhere1... 请教关于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太长以至于报通信错误。这个有什么好的解决方法么?
展开
 我来答
百度网友bfb9204
2012-05-18 · TA获得超过718个赞
知道小有建树答主
回答量:1008
采纳率:66%
帮助的人:443万
展开全部
用子查询代替in()裏面的数据
比如吧101,102.。。。放到一个表裏面去
select *from table where id in(select Id from 新建的表)
这样也容易维护!!要是增加10*的时候就在新建的表裏面加入就可以了!!
藏漂生活这几年
2012-05-18 · TA获得超过681个赞
知道小有建树答主
回答量:409
采纳率:33%
帮助的人:349万
展开全部
1, 你可以把in后边的那些数据 保存到一个表里边。这样直接取表就可以了。
2,写动态sql 把in 后边的按照一定的规律 拼出来,这样太麻烦了。还是放在表里好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mulin1945
2012-05-18 · TA获得超过246个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:190万
展开全部
用临时表来解决,把导致长的字段做成临时表,主表与临时表关联实现查询
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友091a2700cd
2012-05-18 · TA获得超过103个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:250万
展开全部
你不会用id在某段区间来判断吗?为什么非要写1=1呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iambise
2012-05-18 · TA获得超过714个赞
知道小有建树答主
回答量:834
采纳率:50%
帮助的人:503万
展开全部
楼主,id in后面的部分是从哪里来的?有什么规则或者可以作为另外一个表保存吗?如果可以作为表,那么就用 in (子查询) 来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
石亮东
2012-05-18 · TA获得超过1217个赞
知道小有建树答主
回答量:2022
采纳率:66%
帮助的人:1408万
展开全部
这个在11g 里好像解决了,
一般做法是把这些数据插入临时表中, 再用表关联
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式