日期:2014-05-19  浏览次数:20444 次

这两种查询方式那种查询方式返回结果更快?
有三个表,第一个表是部门分类表,第二个表是人员资料表,第三个表是就餐明细表。

第一个表主要字段是:部门编号(主键)、部门名称

第二个表主要字段是:人员编号(主键)、部门编号(外键)、部门名称

第三个表主要字段是:人员编号、就餐时间、收费机号、消费金额、余额、部门编号、部门名称

第三个表是按人员编号、就餐时间、收费机号三个字段联合主键的。

如果要查询部门就餐汇总,有两种查询方法:

第一种:用前两个表的资料更新第三个表,然后直接用第三个表汇总查询

select   部门名称,count(*)
from   就餐明细表
group   by   部门名称

第二种:使用三个表链接,然后根据第一个表的就餐编号汇总查询

select   abc.部门编号,count(*)
from   部门分类表   abc
left   join   人员资料表   abd
on   abc.部门编号   =   abd.部门编号
left   join   就餐明细表   abe
on   abd.人员编号   =   abe.人员编号
group   by   abc.部门编号


请问以上两种方式,在数据量大的情况下(就餐记录上10w条以上),那种返回结果更快

------解决方案--------------------
如果是单看两句sql肯定是前者快.如果有业务绑定肯定是后者好咯.
------解决方案--------------------
冗余设计为什么每次汇总还要更新部门数据?

如果需要更新肯定第二种快,这样冗余的字段就根本没必要了


------解决方案--------------------
第二种吧 理由:不用根据第一个和第二表更新而更新````
------解决方案--------------------
从查询效率来说.地一种比较快.
你可以计算两者的时间,对比一下.