问题描述
在写sql时,听说过in语句的执行效率比较低,但是下面的情况我必须要用in语句,如一个表customer的主键为ID,我在程序里面找到了要取出来的所有的customer的ID然后我要根据这些ID把customer的详细信息从数据库中取出来,我只好用in了不知道这种情况有没有不用in语句的办法
解决方案
解决方案二:
同问,我的sql也很烂,平时也老用in...
解决方案三:
不一定,如果in里边的语句执行效率低,并且如果这个返回的数组比较大的话,那会比较响整个语句。不管怎么说in和=号肯定也是要差距的,但也有相同之处就是都是在什么范围内的,索引也能支持。但如果是!=或是notin,不在什么范围,那是索引不支持的。所以看情况吧。
解决方案四:
selectc.*fromcustomerc,另一张表wherec.id=另一张表.id楼主是想表达这意思么?
解决方案五:
用=号,或者用过程来实现
解决方案六:
主键为ID,这个是固定值的话,=号就好了in是一个集合,先判断下exists
解决方案七:
可以啊那就是一个ID的查询customer的详细信息
解决方案八:
可以你用=号啊select*from表名ID=要查询ID就可以
解决方案九:
in虽然会降低效率,关键还看用在何处了,如果客户感受速度可以,用in也无防.大家都因为降低一点效率不用in,用函数等其他方法,效率不是更低.
解决方案十:
1.尽量用关联查询,2.关联查询解决不了,可以考虑使用存储过程3.如果id是在程序里得到的可以考虑拼接sql语句,拼接成这种形式id='id1'orid='id2'or..4.如果id数量不太多,比如几十个,可以直接用in,效率上没什么区别的
解决方案十一:
不能一概而论吧如果id数据量较少用in效率还是很好的
解决方案十二:
数据量有多大呢?有没有百万级??~需要的话customer得主键ID上最好建个索引。
解决方案十三:
有时候用where子查询速度要比连接查询速度快些数量在10万左右的话,就用in,如果在百万级的话,那考虑建一个索引
解决方案十四:
顶!学习!
解决方案十五:
上传过一个连接查询PDF---自己看去吧!
解决方案:
如果ID是索引字段,那么用IN会导致索引失效,导致全表扫描,大数据量的情况下可能是致命的问题。如果ID的数量不多,就算对每一个ID执行一条查询语句,只要能用到索引,也是值得的。
解决方案:
in和exists看情况使用吧in在对付大的数据集合的时候很不理想还是使用exists好但exists对多条件支持不好
解决方案:
一般的说法是用exists代替in,用notexists代替notin。你这种情况倒是可以用连接代替子查询,理论上更高效。
解决方案:
我不知道什么in不in的,我写代码用的是spring,一般不会用到这个in。也能做到你的功能。有的时候用and是不是也可以啊。
解决方案:
我一般不把这些逻辑写在SQL语句中如果按你所说的意思我大概理解为表a;表bselect*fromawhereidin(selectidfromb)我一般都是通过代码吧ID全部查询出来然后通过传参吧ID传入完成所要查找详细信息的action中
解决方案:
我们的系统数据量是很大的,但是一般这种情况用in或者exists。没发现效率有多么不好。但是实用in的时候需要注意一下,这个是我同事和我说的,但是我没遇到过。就是in后面的括号里是有大小限制的,如果太大就会报sql异常。这里所说的大小就是将括号里的字符串拼起来的大小。