
(1)改用exists,这样的话查一遍就行了(虽然理论上是这样,不过我看执行计划没看出来),in的话是两遍
(2)尽量减少in内的数据,继续缩小范围,如果实在没办法减小范围,那就只能是多次查询(慎用,虽然说多次查询每次的量小了,但是多次查询也容易出问题),或者也可以用关联查询试试看(也就是不作为条件,而是作为一张表查询,查询后再关联,这样的话走hash可能会快,这个不一定,要看具体的执行计划)
有点麻烦,就是你要把你的ID重新组装一个SQL,比如你的ID是:1,2,3,4,而查出来的只有1,2,3的数据,4没有数据,你可以这么做:select * from (select 1 as id union select 2 as id union select 3 as id union select 4 as id) a where id not in
(select id a FROM VIN n where id in(1,2,3,4) group by id)
得到id:4
你那么多ID的话,建议建立一个临时表,把你的200个ID存到这个表里去,然后SQL和上面一样,把a表换成你的临时表就可以了。找到后清空或删除你的临时表(根据业务需要)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)