欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

设某商品经营管理系统使用SQL Server 2000数据库管理系统在数据库中存在销售明细表,其建表语句

时间:2017-09-26

设某商品经营管理系统使用SQL Server 2000数据库管理系统。在数据库中存在销售明细表,其建表语句为:

CREATE TABLE销售明细表(

销售单据编号varchar(8),

商品编号varchar(8),

单价money,

数量int,

总价money

) ,

为了保证数据的一致性,建有如下触发器:

CREATE TRIGGER AutoCountSum

ON销售明细表FOR INSERT,UPDATE

AS

DECLARE@UnitPrice money,@Quantity int

DECLARE@Amount money

SELECT@UnitPrice=单价,@Quantity=数量

FROM inserted

SET@Amount=@UnitPrice*@Quantity

UPDATE销售明细表SET总价=@Amount

WHERE销售单据编号IN(SELECT销售单据编号FROM inserted)

AND商品编号IN(SELECT商品编号FROM inserted)

①设系统运行一段时间后此表中有近一百万条记录,此时发现对该表的插入操作速度很慢,请分析插入速度慢的原因。(3分)

在不改变数据库服务器硬件和表结构、不清理数据的情况下,请说明应如何优化此表的插入操作。(2分)

②在解决了①中的问题后,程序员在数据库中执行如下SQL语句:

SELECT商品编号,sum(总价)FROM销售明细表

WHERE单价>50

GROUP BY商品编号

请在不改变该SQL语句的情况下,给出提高该查询执行效率的方案。(5分)

答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。


答 案:①inserted表用于存储INSERT和UPDATE语句所影响的行的副本。在一个插入或更新事务处理中新建行被同时添加到inserted表和触发器表中。inserted表中的行是触发器表中新行的副本。当表中有近100万条记录的时候inserted表中也存在大量的数据而触发器要在inserted表中进行查询所以插入的速度会变慢。可以通过删除inserted表中数据的方法来优化插入的速度。②该SQL语句的查询结果为:在销售明细表中按照商品编号统计单价大于50的商品的销售总价。在不改变该SQL语句的情况下可以为销售明细表按照“商品编号”建立一个索引来提高查询的效率。
①inserted表用于存储INSERT和UPDATE语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到inserted表和触发器表中。inserted表中的行是触发器表中新行的副本。当表中有近100万条记录的时候,inserted表中也存在大量的数据,而触发器要在inserted表中进行查询,所以插入的速度会变慢。可以通过删除inserted表中数据的方法来优化插入的速度。②该SQL语句的查询结果为:在销售明细表中,按照商品编号统计单价大于50的商品的销售总价。在不改变该SQL语句的情况下,可以为销售明细表按照“商品编号”建立一个索引,来提高查询的效率。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。