一般数据库会根据使用的情况来设计, 为了保证性能一般链接的表不应该超过2个,

但是在数据统计汇总运算的时候就麻烦了, 往往需要查好多张表才能得到需要的数据.

如果查询很复杂的时候一次join好多张表会导致查询速度巨慢.

当然用php等动态语言把数据取出来进行运算也不错,就是需要写代码.

 

能在数据库内完成的运算 当然想要直接在库内完成

使用临时表存储计算过程中的中间数据时隔不错的选择

使用临时表进行数据统计, 避免出现超过3个以上的join操作

–以防万一先删除表

drop table if exists tmp_table;

–创建临时表的时候加上temporary 关键字就行了

create temporary table tmp_table(uid bigint not null primary key, cityid int(10) unsigned, prov varchar(50), city varchar(50), group_id tinyint );

 

–把多个表中需要的数据组合在一起插入临时表中, 暂时没有的数据插入空字符串

insert into tmp_table select a.uid as uid, a.cityid as cityid,'','',0 from my_city a inner join my_op b on a.uid=b.uid where a.reg_date='2012-04-10' and b.ctime>0;

–联合多表更新

update tmp_table a, my_city b  set a.prov=b.prov, a.city=b.area where a.cityid=b.id;

–还是联合多表更新

update tmp_table a, my_city_auth b  set a.group_id=b.group_id where a.prov=b.prov;

 

–剩下的就只是把算好的数据读出来了.

而且临时表是session级别的, 只有当前用户可见, 而且断开链接后就自动清理了.