请教关于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太长以至于报通信错误。这个有什么好的解决方法么? 展开
但现在数据量庞大到sql太长以至于报通信错误。这个有什么好的解决方法么? 展开
6个回答
展开全部
1, 你可以把in后边的那些数据 保存到一个表里边。这样直接取表就可以了。
2,写动态sql 把in 后边的按照一定的规律 拼出来,这样太麻烦了。还是放在表里好了。
2,写动态sql 把in 后边的按照一定的规律 拼出来,这样太麻烦了。还是放在表里好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用临时表来解决,把导致长的字段做成临时表,主表与临时表关联实现查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不会用id在某段区间来判断吗?为什么非要写1=1呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,id in后面的部分是从哪里来的?有什么规则或者可以作为另外一个表保存吗?如果可以作为表,那么就用 in (子查询) 来实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个在11g 里好像解决了,
一般做法是把这些数据插入临时表中, 再用表关联
一般做法是把这些数据插入临时表中, 再用表关联
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询