select * from table where id in( var ),当var个数比较多时,超过50小于100,就变的非常慢了,要好的替代方法吗? 如果这些VAR没有规律,那就说明一定要把这些VAR都写出来,我觉得理论上是一定要一个个比较的,没有可能优化var多如果是因为传输SQL语句太长的问题,可以把这些VAR存入数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.尽量不要用*2.在某些情况下可以再加一个id的上下限判断来缩小查询范围3.可以尝试分开运行,每一个id运行一次,然后将数据整合到一个数组 use a temp table to store these IDs and add an INDEX for ID field 可以尝试分开每个ID运行一句,或者拆为IN中包含固定个数ID的var,分为多个语句执行,比每个ID执行一次效率稍高一些. set @var = '1,2,3,4,........,100000';select * from table where id in(id,@var ); 上面写错了。 set @var = '1,2,3,4,........,100000';select * from table where id find_in_set(id,@var ); 菜鸟关于Session的几个问题 高分求助如何用curl提交COOKIE 广州非小型黑暗公司招人 ◆◇php终极问题◆◇:如何用php新建一个文件,并在限定时间以后删除该文件!! ★★★关注程序员健康★★★昨天(周一)公司组织去体检,现在有了初步结果 求图片程序!!! 一个有关cookies的问题? help me 语法 哪有支持php3的主页空间? php foreach 里面不相等的值显示出来的 asp中有什么方法可以代替php的fsockopen函数 求救,如何在同一个域名下的虚拟路径指向不同的页面?
2.在某些情况下可以再加一个id的上下限判断来缩小查询范围
3.可以尝试分开运行,每一个id运行一次,然后将数据整合到一个数组
或者拆为IN中包含固定个数ID的var,分为多个语句执行,比每个ID执行一次效率稍高一些.
select * from table where id in(id,@var );
set @var = '1,2,3,4,........,100000';
select * from table where id find_in_set(id,@var );