优化表上的简单更新

时间:2009-11-20 11:22:26

标签: mysql optimization

我在存储过程中运行以下查询,执行时间为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列上有简单的索引。

提前致谢。 问候, 玛纳斯

5 个答案:

答案 0 :(得分:1)

你是如何测量30ms的?如果通过运行该过程一次,结果将被运行测试的开销所淹没。把它放在一个循环中然后说1000次,然后将结果除以1000,那你得到了什么?

答案 1 :(得分:0)

我不确定在保持相同功能的同时,你可以在这里做些什么改变;这是一个非常基本的查询。

答案 2 :(得分:0)

我的猜测是时间不会花在存储过程中,而是花在调用它的代码上(加上网络开销等)。

答案 3 :(得分:0)

当你说30毫秒时,是cpu时间还是整体性能时间?你知道有多少记录正在更新(我根据例子猜测一个小数字,但不确定)。此外,桌子上还有一个触发器,因此正在做的工作比满足眼睛要多......

我同意,这是一个简单的查询,因此优化它并不是很多。您可能希望在两个字段上放置聚簇索引,但我不知道这是否适合您的应用程序。

答案 4 :(得分:0)

您可以尝试在(CustID,CustProdId)上使用最左边的前缀索引。