gpt4 book ai didi

mysql - 简单的mysql更新查询有时很慢

转载 作者:行者123 更新时间:2023-11-30 23:34:48 26 4
gpt4 key购买 nike

我有一个简单的查询,通常在 0.0002 秒内完成。有时(例如 200 次中的 1 次)查询将花费多达 1000 倍的时间才能完成。

慢查询日志:

# Time: 111205 12:21:21
# User@Host: abc[abc] @ localhost []
# Query_time: 0.120205 Lock_time: 0.000025 Rows_sent: 0 Rows_examined: 1
SET timestamp=1323084081;
UPDATE `users`
SET `online`=NOW(),
lastip='123.123.123.123',
pageviews = pageviews + '1',
onlinetoday = '1'
WHERE `user_name`='Alex'
LIMIT 1;

user_name 字段被索引。更新的字段(onlinelastippageviewsonlinetoday)不是。

使用主键 (A_I, int(35)) 而不是 user_name (varchar(50)

该表包含 22 000 行和 68 个字段,其中 5 个是索引。

我还有另一个表有完全相同的问题:

CREATE TABLE `person_values` (
`id` int(255) NOT NULL,
`A1` int(255) NOT NULL DEFAULT '0',
`A2` int(255) NOT NULL DEFAULT '0',
`A3` int(255) NOT NULL DEFAULT '0',
`A4` int(255) NOT NULL DEFAULT '0',
`A5` int(255) NOT NULL DEFAULT '0',
`A6` int(255) NOT NULL DEFAULT '0',
`A7` int(255) NOT NULL DEFAULT '0',
`A8` int(255) NOT NULL DEFAULT '0',
`A9` int(255) NOT NULL DEFAULT '0',
`A10` int(255) NOT NULL DEFAULT '0',
`A11` int(255) NOT NULL DEFAULT '0',
`A12` int(255) NOT NULL DEFAULT '0',
`A13` int(255) NOT NULL DEFAULT '0',
`A14` int(255) NOT NULL DEFAULT '0',
`A15` int(255) NOT NULL DEFAULT '0',
`A16` int(255) NOT NULL DEFAULT '0',
`A17` int(255) NOT NULL DEFAULT '0',
`A18` int(255) NOT NULL DEFAULT '0',
`A19` int(255) NOT NULL DEFAULT '0',
`A20` int(255) NOT NULL DEFAULT '0',
`A21` int(255) NOT NULL DEFAULT '0',
`A22` int(255) NOT NULL DEFAULT '0',
`A23` int(255) NOT NULL DEFAULT '0',
`A24` int(255) NOT NULL DEFAULT '0',
`A25` int(255) NOT NULL DEFAULT '0',
`A26` int(255) NOT NULL DEFAULT '0',
`A27` int(255) NOT NULL DEFAULT '0',
`A28` int(255) NOT NULL DEFAULT '0',
UNIQUE KEY `person` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

查询:

UPDATE `person_values` SET A25 = A25 + 1 WHERE id = '1' LIMIT 1;

person_values 包含大约 28 000 行。

Mysql服务器版本:5.1.49-3-logMysql客户端版本:5.1.49发行版:Debian 6.0.3

是什么导致了这个问题?

最佳答案

  1. 请发布您的架构的相关部分:SHOW CREATE TABLE
    tbl_name
    .
  2. 检查您是否设置了用户名的索引大小, 因为您很可能正在使用 varchar 列。你应该设置 此类列上索引的字符长度,例如:CREATE INDEX
    part_of_name ON customer (name(10));

关于mysql - 简单的mysql更新查询有时很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8385043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com