长达20k的sql语句
oracle中对于sql语句没有长度限制。
但是oracle对于20k的sql语句在sql语句解析上是否存在问题,在配置上需要如何调整?
是否还有其他的问题?
大概作了一下测试,好像对oracle服务器的资源消耗影响不大。
请有经验的DX帮我提供经验数据或指导性意见。
不胜感激。
附:20k长的sql语句可能不多见,我现在的这个项目中却碰到了,希望这不是一个问题,不然就要寻求其他解决途径了。
问题点数:100、回复次数:22Top
1 楼eidolon_warrior(精灵_战士)回复于 2005-09-07 13:14:27 得分 0
能把sql贴过来 鉴赏一下吗 呵呵Top
2 楼blackhawk_yps(原来是这样)回复于 2005-09-07 13:36:46 得分 0
SQL语句本身很简单,就是结果集的字段多、检索条件多。Top
3 楼waterfirer(水清)回复于 2005-09-07 14:20:45 得分 20
好像没什么限制,不过同样条件下一定是是越长越慢。
我的一个170k的语句检索结果是
360 rows selected in 4.36 seconds
Top
4 楼qiaozhiwei(乔)回复于 2005-09-07 16:32:56 得分 5
应该没有限制的,但还是贴出来看看,看能不能有更好的方法Top
5 楼blackhawk_yps(原来是这样)回复于 2005-09-07 17:49:18 得分 0
我的sql语句就是一个10多张表的简单连接查询,类似如下:
select table1.field1,table1.field2,...table1.field100,...,table15.field1,table15.field2,...table15.field100 from table1,table2,...table15 where table1.id = table2.id and table1.id = table3.id and ... and table1.id = table15.id。
看了Waterfirer的检索结果好象问题不大。
不知道各位提到的限制是指哪些方面的限制,我主要担心的是oracle服务器的资源消耗以及并发访问时服务器负荷问题。
还望各位能够详细描述,或者推荐一些oracle官方资料,多谢了。Top
6 楼ATGC(花开蝶舞,木秀鸟栖)回复于 2005-09-11 14:31:48 得分 0
170k的SQL语句,这么长啊
170000
十几万个字节呢。。Top
7 楼yearlist(泥巴)回复于 2005-09-12 15:40:16 得分 0
想把自己写的20几K的SQL贴上来“显摆一下”,没想。。。。。
回复内容太长!!请分开回复!!Top
8 楼waterfirer(水清)回复于 2005-09-12 15:56:23 得分 20
呵呵,我也遇到过这种情况。分开的话最多连续三个贴,也还是贴不完。:)
我的语句就是表多,字段多,简单条件的查询,然后一堆的union。
其实能给他缩小很多,无非是把条件并一下。
但以后可能会修改,像增加或减少一个条件,那样就要重新构思,整个sql都要改,所以就一个条件一段sql,加上注释,要就加上,不要就注释了,也就方便了。
to 楼主:我主要担心的是oracle服务器的资源消耗以及并发访问时服务器负荷问题
这个我没有统计过,不太清楚,我觉得只要检索时间够快应该不会出问题的。
根据客户在这方面的要求做下测试吧,只要达到要求就行。Top
9 楼hevin(没有什么是不可能的)回复于 2005-09-12 22:09:18 得分 0
还是170K的比较牛Top
10 楼sanoul(垃圾)回复于 2005-09-13 09:17:28 得分 20
大家都厉害的,不过Oracle查询的消耗量,主要是在遍历数据,而不是解析Sql语义,如果20张表数据量很小,即使全部关联写出100K的Sql,应该速度也是可以的,如果3张表,超过GB级别的数据遍历,那就速度会存在明显的区别,除非你的CPU和RAID超强的快Top
11 楼hyee(小狗旺财)回复于 2005-09-14 10:24:23 得分 0
oracle可以执行32k的sqlTop
12 楼blackhawk_yps(原来是这样)回复于 2005-09-14 15:06:52 得分 0
看了大家的回复,好像没有碰到什么问题。
这个问题再挂两天结贴,看看是否还有宝贵经验可以参考。Top
13 楼ffanpeng(樊澎)回复于 2005-09-14 15:11:49 得分 5
用视图可以吗Top
14 楼licsth(北京三毛)回复于 2005-09-23 16:50:05 得分 0
oracle中对于sql语句没有长度限制。
------------->
我可以很负责人的说,在PL/SQL中肯定有限制,我曾亲身体验过运行死掉的状态。Top
15 楼ynwpl(Brave&Heart)回复于 2005-10-05 12:44:47 得分 0
呵呵,楼上的,运行死掉也不能说明就有长度限制啊?
如果Sql语句太长,主要考虑一下运行效率怎样了?关联十多个表并不是一个太好的主意,关联表太多可以用子查询替换掉一些,这样性能会高一些。Top
16 楼kidman_ray(Kidman Ray)回复于 2005-10-05 13:52:55 得分 0
我在sqlplus上执行sql语句,最大长度为2499Top
17 楼ckc(火)回复于 2005-10-06 11:36:58 得分 15
如果担心解析影响速度的话,你应该把它编译成存储过程或者是搞成视图
不过你的这个sql并不是逻辑复杂,也许问题不大
刚学数据库的时候听人说见识过一个sql,服务器需要解析十分钟,这样的sql编译成存储过程就可以节约绝大部分解析时间Top
18 楼zxbyhcsdn(沙子)回复于 2005-10-12 21:38:44 得分 0
天!!不晓得这么长的Sql要写好久!!Top
19 楼chanet(牧师)回复于 2005-10-12 22:06:39 得分 5
可以的话,上传看看~ 呵呵~~
写了几年的sql,看到最长的是几百字节的sql,一接手,第一时间把它分开几段~ 呵呵...Top
20 楼yxsalj(想和你去吹吹风)回复于 2005-10-14 10:10:26 得分 5
没必要吧,首先这种写法就是个坏习惯,其次多表连接,长语句的解析肯定会对性能有影响Top
21 楼humanity(城市边缘的狼)回复于 2005-10-21 09:04:03 得分 5
10个表连接? 太夸张了吧。
那搜索 C1 x C2 x C3 x ... x C9 x C10 ,
对这么多个记录进行条件匹配?
如果每个表有 100 条记录。
那么不是要找 100 ^ 10 条?Top
22 楼blackhawk_yps(原来是这样)回复于 2005-10-22 14:45:02 得分 0
忙了一阵,都忘了这个贴还没有结。我的sql语句目前还有验证结果。
结贴先。Top




