oracle中对于sql语句没有长度限制。
但是oracle对于20k的sql语句在sql语句解析上是否存在问题,在配置上需要如何调整?
是否还有其他的问题?大概作了一下测试,好像对oracle服务器的资源消耗影响不大。请有经验的DX帮我提供经验数据或指导性意见。
不胜感激。附:20k长的sql语句可能不多见,我现在的这个项目中却碰到了,希望这不是一个问题,不然就要寻求其他解决途径了。

解决方案 »

  1.   

    能把sql贴过来 鉴赏一下吗 呵呵
      

  2.   

    SQL语句本身很简单,就是结果集的字段多、检索条件多。
      

  3.   

    好像没什么限制,不过同样条件下一定是是越长越慢。
    我的一个170k的语句检索结果是
    360 rows selected in 4.36 seconds 
      

  4.   

    我的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官方资料,多谢了。
      

  5.   

    170k的SQL语句,这么长啊
    170000
    十几万个字节呢。。
      

  6.   

    想把自己写的20几K的SQL贴上来“显摆一下”,没想。。回复内容太长!!请分开回复!!
      

  7.   

    呵呵,我也遇到过这种情况。分开的话最多连续三个贴,也还是贴不完。:)我的语句就是表多,字段多,简单条件的查询,然后一堆的union。
    其实能给他缩小很多,无非是把条件并一下。
    但以后可能会修改,像增加或减少一个条件,那样就要重新构思,整个sql都要改,所以就一个条件一段sql,加上注释,要就加上,不要就注释了,也就方便了。to 楼主:我主要担心的是oracle服务器的资源消耗以及并发访问时服务器负荷问题
    这个我没有统计过,不太清楚,我觉得只要检索时间够快应该不会出问题的。
    根据客户在这方面的要求做下测试吧,只要达到要求就行。
      

  8.   

    大家都厉害的,不过Oracle查询的消耗量,主要是在遍历数据,而不是解析Sql语义,如果20张表数据量很小,即使全部关联写出100K的Sql,应该速度也是可以的,如果3张表,超过GB级别的数据遍历,那就速度会存在明显的区别,除非你的CPU和RAID超强的快
      

  9.   

    oracle中对于sql语句没有长度限制。
    ------------->
    我可以很负责人的说,在PL/SQL中肯定有限制,我曾亲身体验过运行死掉的状态。
      

  10.   

    呵呵,楼上的,运行死掉也不能说明就有长度限制啊?如果Sql语句太长,主要考虑一下运行效率怎样了?关联十多个表并不是一个太好的主意,关联表太多可以用子查询替换掉一些,这样性能会高一些。
      

  11.   

    我在sqlplus上执行sql语句,最大长度为2499
      

  12.   

    如果担心解析影响速度的话,你应该把它编译成存储过程或者是搞成视图
    不过你的这个sql并不是逻辑复杂,也许问题不大
    刚学数据库的时候听人说见识过一个sql,服务器需要解析十分钟,这样的sql编译成存储过程就可以节约绝大部分解析时间
      

  13.   

    天!!不晓得这么长的Sql要写好久!!
      

  14.   

    可以的话,上传看看~ 呵呵~~写了几年的sql,看到最长的是几百字节的sql,一接手,第一时间把它分开几段~ 呵呵...
      

  15.   

    10个表连接? 太夸张了吧。那搜索 C1 x C2 x C3 x ... x C9 x C10 , 
    对这么多个记录进行条件匹配?如果每个表有  100 条记录。
    那么不是要找 100 ^ 10 条?
      

  16.   

    忙了一阵,都忘了这个贴还没有结。我的sql语句目前还有验证结果。
    结贴先。