本人现在有个程序,已经做完了,但是有点疑问。
程序的sql语句中,where 子句里有一个 in (,,,,)的限制条件,我使用的是参数,接受一个数组,然后按照数组的大小循环添加参数名和参数值:
in (@p1, @p2, @p3 .....@p1000, ,,,)
但是现在有个疑问,目前在国内来说,总更大约有30多个参数需要添加,但是随着公司业务的不停扩展,在海外业务也发展起来,那按照每个国家有50个参数,200个国家来说,酒的需要10000个参数
问题是,in(....)里面,能用10000个参数吗?

解决方案 »

  1.   

    1、in的效率本来就不好。
    2、如果是SQL语句的话,没有听说过这个in后面的参数个数有限制。
      

  2.   

    最好存为临时表,然后inner join [临时表]的方式来判断.
      

  3.   

    你要问我 ado.net访问MSSQL参数有几个,我会告诉你很多,很多!
      

  4.   


    谁告诉你in效率低了?谁让你用临时表了? 谁用临时表,说明谁对数据库不熟悉,技术差~!
    我发现只用过MSSQL的同学,很喜欢用临时表。
    人家数据库自己就能把in(....)里面的各个参数组织成一个表来和别的表关联,还用得着你自己动手写临时表?
    当然了MSSQL水平本来很差的,被Oracle等拉的不是一个水平上的,直到今年,MSSQL才开始追赶,不然太操蛋了,这些年来,云计算,大规模数据的兴起,造成MSSQL2000版本之前的几乎没了用武之地,所以MSSQL才不得不发力重新设计2005\2008.
      

  5.   

    但SQL语句的长度是有限制的,你这种用法只可保一时之需,并非一世可用之法啊。
      

  6.   


    兄弟,不好意思,实际上,在能用临时表又能用 in 的地方,用临时表的效率要比用 in 高得不是一个数量级,特别是在 in 里面的东西很多的时候.
      

  7.   

    如果真有这种情况,那只能说明MSSQL设计的差。