某商品经营管理系统使用SQL Server数据库管理系统,其中销售单据明细表建表语句如下:CREATE TABLE销售单据明细表(
销售单据编号 varchar(8),
商品编号 varchar(8),
单价 real,
数量 int,
总价 real
);
为保证数据一致性,设有触发器:
CREATE TRIGGER AutoCountSum
ON 销售单据明细表 FOR INSERT,UPDATE
AS
DECLARE @UnitPrice real, @Quantity int, @Amount real
SELECT@UnitPrice =单价,@Quantity =数量FROM inserted
SET @Amount = @UnitPrice*@Quantity
UPDATE销售单据明细表SET总价=@Amount
WHERE 销售单据编号 IN(SELECT销售单据编号FROM inserted)
AND 商品编号 IN (SELECT商品编号FROM inserted)
系统运行一段时间后,表中有近千万条数据,此时以“销售单据编号”和“商品编号”为条件修改其他字段操作速度很慢。解决该问题一段时
间后,系统平稳运行3年,用户反映系统速度慢,管理员监控系统资源使用情况如下:
CPU使用率一般不超过70%;
内存使用率95%;
磁盘I/O使用率高峰期90%-95%,主要为读操作;
请判断以下说法是否正确:
(1)以“销售单据编号”和“商品编号”为条件修改其他字段操作慢,是因为表中数据量达近千万条,查询速度受影响,在这两列建立索引
可优化()