某商场商品经营管理系统使用SQL Server 2008数据库管理系统,此系统上线运行1年后,业务人员使用某统计功能(此功能每月使用一次)时发现速度很慢。该统计功能主要执行的SQL语句如下: SELECT商品号,SUM(销售数量*销售价格)销售额 FROM

admin2016-10-10  33

问题 某商场商品经营管理系统使用SQL Server 2008数据库管理系统,此系统上线运行1年后,业务人员使用某统计功能(此功能每月使用一次)时发现速度很慢。该统计功能主要执行的SQL语句如下:
SELECT商品号,SUM(销售数量*销售价格)销售额
FROM销售明细
GROUP BY商品号;
该销售明细表的建表语句如下:
CREATE TABLE销售明细(
序列号int    IDENTITY(1,1)NOT NULL,
商品号int    NOT NULL,
销售日期datetime NULL,
销售数量int    NOT NULL,
销售价格int    NOT NULL
);
并在销售明细表上建有如下索引:
CREATE index ix_销售明细_商品号 on 销售明细(商品号);
某技术人员提出通过执行下述语句以提高此查询的运行效率:
CREATE VIEW 商品销售额视图
WITH SCHEMABINDING
AS
SELECT商品号,SUM(销售数量*销售价格)销售额,
COUNT_BIG(*)cnt
FROM dbo.销售明细
GROUP BY商品号;
CREATE UNIQUE CLUSTERED INDEX ix_商品销售额
ON商品销售额视图(商品号);
请分析该技术人员给出的语句功能以及对原有查询语句的性能影响,并给出原因。

选项

答案语句功能:建立包含所关心数据(商品号,销售额,该商品号在表中出现的次数)的带索引的视图,并建立按商品号对应销售额UNIQUE聚簇排序的索引,从而大大缩小了查询语句的查询范围,提高了查询效率。原因:视图中将间接相关的属性列(序列号,销售日期,商品号,销售数量,销售价格)转换成了目标属性列,减少了搜索空间,同时建立UNIQUE CLUSTERED索引,使查询商品号的数据记录唯一,因此降低了搜索范围,提高了搜索效率。

解析
转载请注明原文地址:https://jikaoti.com/ti/Gb37FFFM
0

最新回复(0)