sql语句中当条件的数量非常大时where...in条件子句用什么更好的方法代替? 当sql语句中的where条件是where id in(1,2,3,4,8,11,23,56,89,110,...),即当in的数量相当大时,这种sql语句是很劣质的,那么用什么其它更好的方法解决这样的问题呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把in中的id分开来查询,最后再合并起来。 select * from x where id=1 union all select * from x where id=2 union all ... 那就不是 sql语句很劣质的 的问题了,既然你允许传入一万个 id 值,那么为什么要说包含这一万个 id 值得 in 子句是劣质的呢? $sql = 'select * from table where id in(' . $id . ')';$id 的值是多个的,当它的值是一个很庞大的数目时,用in显然是很不明智的,求高手妙方!!! 就看LZ 到底Where 来干什么的. 是更新,删除还是怎么的.再说吧 有兴趣的话可以看这个bloghttp://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/不过,就如blog结尾所说,只有在数量比较大的情况下才能看出明显效果. 如果你的id就那么几个,几十个...我不认为需要考虑这点差别.1,2楼分开查询的方法我认为不可取, 因为mysql内部的处理大概也不会比那样更差吧... 同意楼上,仅几个,几十个(甚至几百个)的 IN ID 效率低不到哪去。不然你还有什么好办法。 我觉得这才是问题的要点。如果可能的话,把当初获得这一组id的sql语句跟后面要实现的sql语句结合起来做关联查询。如果这一组id不是用某个sql语句得到的,那恐怕要重新考察一下业务需求和实现方案了,真的需要对这么大的一组“没来由”的id进行批量处理吗?————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 接着楼主提个问,嘿嘿没测试过,你的意思是联合查询比where in 更好? 要看具体情况。一般来说,如果 in list 是一个比较小的常量集合的时候,in 的效率还是很好的,但当 in list 比较大的时候(比如超过 1000 以后),效率就会变差了,这时候很可能就是关联查询效率更高了。 嘿嘿, 没看我上面贴的blog吧...那是插入临时表再join查询...数据大的情况比in快. Mysql模糊查询去除空格问题?? PHP伪静态页问题! 有什么支持多级阅读权限的,著名的,免费的php cms系统给推荐一下 高手请进, 新手问题,顶者都有分 有没有办法知道这个方法属于哪个类的? 求救阿 ~~大哥大姐们帮帮忙阿!! 如何控制打印效果? 大侠,到哪儿找这个东东:MSSQL DB-Libraries 各位高手看看这个问题,急!!! 【疑问】php 生成.tar.gz文件 关于apache服务器启动虚拟主机服务的问题,求大神指点 求教一个 ajax 的长连接问题。。
$sql = 'select * from table where id in(' . $id . ')';$id 的值是多个的,当它的值是一个很庞大的数目时,用in显然是很不明智的,求高手妙方!!!
就看LZ 到底Where 来干什么的. 是更新,删除还是怎么的.再说吧
http://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/不过,就如blog结尾所说,只有在数量比较大的情况下才能看出明显效果.
如果你的id就那么几个,几十个...我不认为需要考虑这点差别.1,2楼分开查询的方法我认为不可取, 因为mysql内部的处理大概也不会比那样更差吧...
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
接着楼主提个问,嘿嘿没测试过,你的意思是联合查询比where in 更好?