本人项目主要是几个查询功能,提供导入号码查询功能!
我现在的做法是select .... from .... where ....in(xxx,xxx,xxx)
查询语句很复杂,但归纳起来就是上面的这样的形式现在的问题是,在in()中,条件多少未知,我本来以为也就几百个,测试了一下,速度也还过得去!(对查询时间没有要求,使用范围很小,只是几个人用的)当时也没在意!交付了,一开始也没发现问题,但是,现在用户导入的数据越来越多.多则上万!
我大致了解了一下,3000左右的数据还行(每个数据十几个字节),再多好像有问题,数据出不来!不知道怎么解决,希望大家给点意见!

解决方案 »

  1.   

    oracle支持的sql语句最大长度64k;
    sqlplus中最大单行长度为2499个;
    in(n,....),其中list的最大列表数是1000,否则报ORA-01795 ;
    解决大于1000的简单方法是把list的列表的数据insert into临时表,然后关联查询,如:
    select ... from tableA a,tempTable t where a.id=t.id; 
      

  2.   

    确实可以考虑动态的建立一张临时表,把list的数据先全部插到临时表里,然后做关联查询,查询结束后,再把临时表删除
      

  3.   

    10G好像没有64K的限制
    The limit on how long a SQL statement can be depends on many factors, including database configuration, disk space, and memory.
      

  4.   

    sql语句肯定要重写,不建议in里包含太多数据。
    最好是构建中间表。
      

  5.   

    sql长度有限制,如果变量的话可能会超过定义长度限制