日期:2014-05-17  浏览次数:20590 次

where in 里条件疑问
1、表m1中有字段 key_id,total_sqm,processing_number等字段,需要统计,
select sum(total_sqm) as sqm from m1 
where processing_number in ('60','70','80','120','140','150')

2、如果m1表上有几十万条数据,其中'70','120','150','80','140','60'现在的频率差别较大,
'70'--》10%,'80'-->70%,其他占20%

3、如果in条件里写的顺序没有按数据出现的频率的写,是否对效率有影响? 请教。






------解决方案--------------------
在一个in里面的话,顺序没影响
------解决方案--------------------
不影响。
in的本质就是
join (select x='11' union all select '22' unino ....) b
on  processing_number=x

------解决方案--------------------
另外:
1、表m1中有字段 key_id,total_sqm,processing_number等字段,需要统计,
select sum(total_sqm) as sqm from m1 
where processing_number in ('60','70','80','120','140','150')

2、如果m1表上有几十万条数据,其中'70','120','150','80','140','60'现在的频率差别较大,
'70'--》10%,'80'-->70%,其他占20%


这种情况,就是全表扫描了,性能不会太好。

可以考虑建个索引,按照processing_number,total_sqm 字段建个符合索引,这样只需要扫描索引,速度应该会更快点