设某超市经营管理系统使用SQL Server 2008数据库管理系统,上线运行一年后,用户反映速度缓慢。经技术人员分析,发现速度缓慢的原因为销售单据表和销售单据明细表数据量巨大,当进行这两个表相关查询时就会造成SQL语句执行缓慢。已知这两个表结构如下:销售

admin2016-10-10  37

问题 设某超市经营管理系统使用SQL Server 2008数据库管理系统,上线运行一年后,用户反映速度缓慢。经技术人员分析,发现速度缓慢的原因为销售单据表和销售单据明细表数据量巨大,当进行这两个表相关查询时就会造成SQL语句执行缓慢。已知这两个表结构如下:销售单据表(销售单据编号,付款总金额,销售时间,销售人员编号,收银台编号),销售单据明细表(销售单据编号,销售时间,商品编号,单价,数量,总价)从业务上看,程序经常会查询1个月内和最近6个月内销售相关数据。为了保证系统稳定运行,两位工程师分别给出了两种优化方案:
甲工程师:按照销售时间将两张表分别拆分为每月一张表,在系统进行查询时按照给定条件到相关的表中直接查询,降低查询涉及到的数据。
乙工程师:使用SQL Server 2008的分区功能,将两张表变为分区表,按照销售时间每年一个分区,降低查询涉及到的数据。
请从程序修改的难易程度、查询1个月内数据的执行速度、查询最近6个月内数据的执行速度3个方面比较甲乙工程师方案。
根据上述分析结果,请基于甲乙工程师的方案给出最合理的优化方案并说明理由。

选项

答案(1)修改难易程度:表分割对于所有的数据库都适用,而表分区只能用于特定的数据库;表分区属于数据库物理设计,表分割属于逻辑设计。从实现方式来看,甲工程师易于实现。 查询1个月内的数据执行速度:甲工程师速度快,乙工程师慢。 查询6个月内的数据执行速度:乙工程师快,甲工程师慢。 (2)采用乙工程师的优化方案,即对表分区进行处理。因为分区表的特点是:如果数据量大,而且数据是分段的,而且对不同段的数据使用的操作不同,则适于使用分区表。本题中对表中当前月的数据,经常进行的操作是添加、修改、删除和查询,而对于以往的数据,则几乎不需要操作,或者操作仅限于查询,那么就可以按月份对表进行分区,从而提高系统的执行效率。

解析
转载请注明原文地址:https://kaotiyun.com/show/BnlZ777K
0

最新回复(0)