update有索引为什么扫全表

版本:5.4
表结构:

CREATE TABLE `amazon_sku` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '库id',
  `amazon_sku_id` varchar(50) COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '亚马逊sku id',
  `url` varchar(1000) COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'sku链接',
  `title` varchar(500) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'sku页面title',
  `name` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品名称',
  `description` text COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品描述',
  `source_brand` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '来源品牌',
  `store_id` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属店铺id',
  `detail_introduce` text COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品介绍',
  `plug_price` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '插件价格',
  `price` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品价格-最小值',
  `price_max` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '商品价格-最大值',
  `excise_price` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '转换汇率后价格-最小值',
  `excise_price_max` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '转换汇率后价格-最大值',
  `sales` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '销量 亚马逊是月销量',
  `brand` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '品牌',
  `comments` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '评论数',
  `sku_rank` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '产品总排名',
  `sku_caterank` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '产品类目排名',
  `crid` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '货币类型',
  `qid` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '原始价格最小值',
  `qid_max` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '原始价格最大值',
  `smid` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '亚马逊链接参数2',
  `remark` varchar(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
  `add_time` int(11) DEFAULT NULL COMMENT '上架时间',
  `update_time` int(11) DEFAULT NULL COMMENT '更新时间',
  `create_time` int(11) DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
  UNIQUE KEY `amazon_sku_id` (`amazon_sku_id`),
  KEY `tilte` (`title`),
  KEY `brand` (`source_brand`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci AUTO_INCREMENT=24170942 COMMENT='SKU';

sql:

UPDATE
  amazon_sku
SET
  source_brand = 6798779
WHERE
  source_brand = 11601184

UPDATE
amazon_sku
SET
source_brand = ‘6798779’
WHERE
source_brand = ‘11601184’

试下,source_brand是varchar类型的,发生了隐式转换。

发下表健康度,还有强制索引的执行计划

看起来是这个索引的区分度不够高呀,看看actRows列

总表数量是多少?

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。