[求助]存储过程优化的问题,急求大虾们帮忙
小弟目前没有积分,对不住各位大大了,以后有积分一定补上.foreach SELECT grpIndex,county,grpid
INTOvgrpIndex,vtempcountyID,bgrpid
FROM table_group
SELECT count(*)
INTO vusers
FROM table_grpuser
WHERE grpIndex=vgrpIndex;
SELECT count(*)
INTO vuserfeeuser
FROM table_grpuser
WHERE grpIndex=vgrpIndex and type='1';
.....
.....
insert into table_tmp
values(.......)
--将上面相关值插入tmp表
end foreach
foreach select locationid,countryid
into vlocationid,vcountryid
from location
SELECT sum(grpuser),sum(grprulednum)
INTO vusernum,vrulednum
FROM table_temp
WHERE location=vlocationID and county=vcountyID;
........
....
end foreach
语句如上,grpuser表的数据量在120万左右,group表在3万左右,请问第一个foreach循环中有好的优化方式么?
第二个循环里面的sum是不是也是影响效率的原因?
另外foreach执行的机理是什么?是先执行select取出一个表的所有数据再执行下一个操作,还是select一条数据,然后执行下一个数据呢? foreach x in group
select * from grpuser ....
end foreach
相当于执行了3万次的120万数据的搜索。一般而言效率不会太好。
你应当尽可能的避免大次数的循环。
比如你可以用grpuser和group表直接关联,让其只做一次group by
通常来说,只要你的关联是在索引上,这样“批量”的工作方式是最适合数据库的。 将table_grpuser表按照你的查询建立索引,重复索引
页:
[1]