3

我在 MySQL 上的 UPDATE 性能非常差,我的更新语句非常基本,例如:

UPDATE `tbl_name` 
   SET `field1` = 'value1', `field2` = 'value2' .. `fieldN` = 'valueN' 
WHERE `tbl_name`.`id` = 123;

值很少 (15),所有 TEXT 类型和 WHERE 条件只是使用 id 的一个。值是 JSON 字符串(但这不应该打扰 MySQL,它应该将它们视为纯文本)。

在“tbl_name”中,我的记录很少(大约 4k)。

问题是执行这个 UPDATE 语句我得到了 8 秒的执行时间(取自 MySQL 慢查询日志)。

我在 EC2 High CPU Medium istance 上单独运行 MySQL,我认为这些性能“正常”几乎是不可能的,我希望性能更高。

你有什么想法来调查这个问题吗?

** 更新 ** 感谢您的快速回答,表是 InnoDB,id 是 PRIMARY,UNIQUE。值为 TEXT(不是 varchar)

** 更新之二 ** 不,id 是整数,所有其他字段都是 TEXT

4

1 回答 1

1

Since MySQL do not support EXPLAIN UPDATE statements before version 5.6.3, we're quite blind about this query. Try USE INDEX statement...

I've launched the same on my server. All was ok with 15 TEXT fields and 4096 rows of quite arbitrary text. It was ok with both USE INDEX(PRIMARY) and IGNORE INDEX(PRIMARY) statements.

So, I suppose, you have problems with your SQL server, installation package, or whatever, not query...

于 2012-10-09T18:54:47.750 回答