执行select * from Tbl where col IN [几千条由or链接的条件子项]。系统回报错 stack overflow!这种问题有什么办法处理?

解决方案 »

  1.   

    做一个临时表col
    ----
    data1
    data2
    data3然后去做JOIN操作.
      

  2.   

    把[几千条由or链接的条件子项]中的条件值先放入到表变量或临时表中, 假设表名为 #临时表, 字段为 Val 
    再连接查询, 这样的话, 就是几十万条也完成查询,几乎没有限制了. 语句如下select * from Tbl as z, #临时表 as t where z.col = t.Val
      

  3.   

    对啊,我们就是这样处理的,你把所有in的部分存储在临时表里,在left join一下就ok了
      

  4.   

    DECLARE @T TABLE(ID NVARCHAR(10))
    DECLARE @ID NVARCHAR(4000)-- IN部分转换到一张临时表
    SELECT  @ID='SELECT '''+REPLACE('US,SS',',',''' UNION ALL SELECT ''')+''''
    INSERT @T EXEC(@ID)SELECT * FROM @T
      

  5.   

    在数据库中你用临时表如上。
    如果你是在程序中,是动态生成 select * from Tbl where col IN [几千条由or链接的条件子项] 这个SQL语句,建议or到一定数量 用union
      

  6.   

    支持把条件做在临时表,然后再用exists或join都可以。
      

  7.   

    都是临时表在做关联的in用的少的很,十个一下的int型才用
      

  8.   

    看看都是零时表了,C#我会放在 stringbuilder理
      

  9.   

    in本来就有很大的限制,只能f1 in (单列的组),如果想(f1,f2) in (双列的组),就不行了
    join就没有这个限制:x join y on x.f1=y.f1 and x.f2=y.f2