问答题

设某商品经营管理系统使用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)
1.设系统运行一段时间后此表中有近一百万条记录,此时发现对该表的插入操作速度很慢,请分析插入速度慢的原因。在不改变数据库服务器硬件和表结构、不清理数据的情况下,请说明应如何优化此表的插入操作。

【参考答案】

由于数据库中有100万个记录,执行“update销售明细表set总价=@Amount”,需要执行100万次,因此插入操作......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)