日期:2014-05-17  浏览次数:20428 次

SQL2000大数据IN查询而且要求排序
IN查询的条件大概有80几条。
表数据有上百万条。

------解决方案--------------------
in 的效率确实很差。

参考;
http://www.111cn.net/database/mssqlserver/41202.htm
------解决方案--------------------
我当时有一个存储过程A里面调用存储过程B,而会在A里面根据参数运算出一堆ID,然后传入B,B里面有一个动态sql是in这堆ID的,所以我后来改成这堆ID,通过函数,转换成一个表,然后已表变量的方式传入到B中。具体的函数我现在没有,叶子的你可以考虑用一下:
http://blog.csdn.net/maco_wang/article/details/6265934
------解决方案--------------------
先把in的值插入到临时表,然后
select a.*
from tab a,#temp t
where a.col = t.col

如果使用存储过程,可以将in的参数拼接成一个xml,作为存储过程参数,存储过程中将xml转到临时表,这个方法查询in几千个值速度没有问题