Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql表更新查询速度很慢,而且每天都在增加_Mysql_Sql_Mysql Error 1064 - Fatal编程技术网

Mysql表更新查询速度很慢,而且每天都在增加

Mysql表更新查询速度很慢,而且每天都在增加,mysql,sql,mysql-error-1064,Mysql,Sql,Mysql Error 1064,我们有一个表,只用于更新查询,它需要大约200-300秒,总数据大小几乎是3357196行。我们有键附加到它和选择查询是非常快的。只有更新查询需要花费很多时间 Mysql 数据库引擎:InnoDB CREATE TABLE `t_strava_push` ( `id` int(11) NOT NULL AUTO_INCREMENT, `strava_user` int(20) DEFAULT NULL, `strava_workout` varchar(20) COLLATE ut

我们有一个表,只用于更新查询,它需要大约200-300秒,总数据大小几乎是3357196行。我们有键附加到它和选择查询是非常快的。只有更新查询需要花费很多时间

Mysql 数据库引擎:InnoDB


CREATE TABLE `t_strava_push` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `strava_user` int(20) DEFAULT NULL,
  `strava_workout` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `type` varchar(45) COLLATE utf8_bin DEFAULT NULL,
  `aspect` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
  `event_time` int(20) DEFAULT NULL,
  `body` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `processed` int(1) NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  KEY `strava_user` (`strava_user`),
  KEY `strava_workout` (`strava_workout`)
) ENGINE=InnoDB AUTO_INCREMENT=3377747 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我们正在尝试更新的查询:

UPDATE t_strava_push SET processed = 3 WHERE strava_workout = 2677850786

该表由每2分钟运行一次的cron作业不断更新。每分钟都有大量数据出现在桌面上


strava_训练
是一个字符串。但是您将它作为一个数字进行比较,因此没有使用索引

保持类型一致

UPDATE t_strava_push
    SET processed = 3
    WHERE strava_workout = '2677850786';

strava_训练
是一个字符串。但是您将它作为一个数字进行比较,因此没有使用索引

保持类型一致

UPDATE t_strava_push
    SET processed = 3
    WHERE strava_workout = '2677850786';

我删除了
sqlserver
标记;因为这个问题显然只与mysql有关。顺便说一句,INT关键字后面括号中的数字是毫无意义的。而且,鉴于strava_训练是一个字符串,它实际上应该是
'2677850786'
。哦,你独特的密钥定义是冗余的,你能解释更多吗@StrawberryMore关于什么?为什么我的唯一密钥定义是多余的@Strawberry我删除了
sql server
标记;因为这个问题显然只与mysql有关。顺便说一句,INT关键字后面括号中的数字是毫无意义的。而且,鉴于strava_训练是一个字符串,它实际上应该是
'2677850786'
。哦,你独特的密钥定义是冗余的,你能解释更多吗@StrawberryMore关于什么?为什么我的唯一密钥定义是多余的@Strawberry@Adhip我同意Gordon Linoff给出的答案,但我想知道你的结果是否证实了这一点。如果是,请将其标记为答案(Gordon Linoff),或者是否还有问题。是的,这是我的问题,谢谢@GordonLinoff@Adhip我同意Gordon Linoff给出的答案,但我想知道你的结果是否证实了这一点。如果是,请将其标记为答案(Gordon Linoff),或者是否仍然存在问题。是的,这是我的问题,谢谢@Gordon Linoff