我在存储过程中运行以下查询,执行时间为30毫秒。任何人都可以帮我优化这个查询:
表定义是:
Create Table Customer
(
CustID int not null auto_increment,
CustProdID int,
TimeStamp DateTime,
primary key(CustID)
);
Update Customer
Set TimeStamp = InputTimeStamp (stored procedure's Input)
Where CustID = InputCustID (stored procedure's Input)
and CustProdID = InputCustProdID; (stored procedure's Input);
除了主索引之外,这个表在custprodID列上有简单的索引。
提前致谢。 问候, 玛纳斯
答案 0 :(得分:1)
你是如何测量30ms的?如果通过运行该过程一次,结果将被运行测试的开销所淹没。把它放在一个循环中然后说1000次,然后将结果除以1000,那你得到了什么?
答案 1 :(得分:0)
我不确定在保持相同功能的同时,你可以在这里做些什么改变;这是一个非常基本的查询。
答案 2 :(得分:0)
我的猜测是时间不会花在存储过程中,而是花在调用它的代码上(加上网络开销等)。
答案 3 :(得分:0)
当你说30毫秒时,是cpu时间还是整体性能时间?你知道有多少记录正在更新(我根据例子猜测一个小数字,但不确定)。此外,桌子上还有一个触发器,因此正在做的工作比满足眼睛要多......
我同意,这是一个简单的查询,因此优化它并不是很多。您可能希望在两个字段上放置聚簇索引,但我不知道这是否适合您的应用程序。
答案 4 :(得分:0)
您可以尝试在(CustID,CustProdId)上使用最左边的前缀索引。