------解决方案-------------------- 没别的,就是升级硬件和软件!
------解决方案-------------------- 把id in(55,66,77……)改成 in=55 or in=66 or in=77 试试
------解决方案-------------------- 把in里面的数字,放入临时表试下
------解决方案-------------------- 不应该吧,才几十万条记录而已就不行了????升级硬件吧
------解决方案-------------------- 用楼上说的,把数字先放入临时表,然后用 select a.* From A a inner join 临时表 b on a.id=b.id
------解决方案-------------------- 有两种方法你可以试试, 1.把in里面的东西放到临时表,再用表关联速度会大幅提升; 2.把in替换成 union all 速度也会快很多,不过用union all sql 会比较长
------解决方案-------------------- 查查id上的索引是否被去掉啦。。。
------解决方案-------------------- 对看看索引
------解决方案-------------------- 都说是索引啊?
------解决方案-------------------- 先把(55,66,77.。。。)存放到一张表,临时表或实际表都可以 ,为B表,则语句可写成
select * from A a where exists(select 1 from B b where a.id=b.id)
记住,不要用in ,用exists,才是ok的!
------解决方案-------------------- --in的内容 declare @count varchar(2000) set @count='111,2222,111,2222' select * A where id in( select substring (value,charindex(',',value)+1,len(value)) as sales from dbo.SplitToTable(@count, ','))
------解决方案-------------------- 17楼正解