首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个非常简单的更新InnoDB查询占用了太多

一个非常简单的更新InnoDB查询占用了太多
EN

Stack Overflow用户
提问于 2012-05-12 08:51:19
回答 2查看 622关注 0票数 1

基本上,我有一个简单的查询:

代码语言:javascript
运行
复制
UPDATE beststat 
  SET rawView = rawView + 1 
  WHERE bestid = 139664 AND period = 201205 
  LIMIT 1

,1秒,

此表(beststat)目前具有~100万记录,其大小为:68 is。我有4GB内存innodb buffer pool size =:Mysql:5.1.49-3

这是我的数据库中唯一的InnoDB表(其他表是MyISAM)

当然,我有关于兽人和周期的unique key index

代码语言:javascript
运行
复制
CREATE TABLE `beststat` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `bestid` int(11) unsigned NOT NULL,
 `period` mediumint(8) unsigned NOT NULL,
 `view` mediumint(8) unsigned NOT NULL DEFAULT '0',
 `rawView` mediumint(8) unsigned NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 UNIQUE KEY `bestid` (`bestid`,`period`)
) ENGINE=InnoDB AUTO_INCREMENT=2020577 DEFAULT CHARSET=utf8

代码语言:javascript
运行
复制
EXPLAIN SELECT rawView FROM beststat WHERE bestid =139664 AND period =201205 LIMIT 1

给予:

代码语言:javascript
运行
复制
id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  beststat    const   bestid  bestid  7   const,const 1    

有什么帮助吗?

EN

Stack Overflow用户

发布于 2012-05-12 15:09:39

为了执行更新,您的查询必须扫描整个表。

在(bestid,句点)上添加一个复合索引,或者将查询更改为使用id。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10562271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档