Mysql 需要查询优化方面的帮助吗?

Mysql 需要查询优化方面的帮助吗?,mysql,Mysql,如何向“目录号”列添加索引? 这是更新查询: CREATE TABLE fa_nls_pd_test ( MKT varchar(100) DEFAULT NULL, PROD varchar(1000) DEFAULT NULL, PRODUCT_LEVEL varchar(100) DEFAULT NULL, CAT_NO int(10) DEFAULT NULL, DYNAMIC_TIME_PERIOD varchar(100) DEFAULT NULL, PRODUCT_LE

如何向“目录号”列添加索引? 这是更新查询:

CREATE TABLE fa_nls_pd_test ( 
MKT varchar(100) DEFAULT NULL, 
PROD varchar(1000) DEFAULT NULL, 
PRODUCT_LEVEL varchar(100) DEFAULT NULL, 
CAT_NO int(10) DEFAULT NULL, 
DYNAMIC_TIME_PERIOD varchar(100) DEFAULT NULL, 
PRODUCT_LEVEL_DIST varchar(100) DEFAULT NULL, 
PRODUCT_LEVEL_ACV_TREND varchar(100) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
一个交易类别11将更新

表大小=10.2 GB,行数=1500万

当我运行此查询时,一个期间一年要花费1个多小时,如何优化查询?

请检查: 此表中不存在“期间\年”列

如果表中有period\u year列,请尝试使用复合索引:

update fa_nls_pd_test set DYNAMIC_TIME_PERIOD = NULL where CAT_NO = 0 and period_year = 201502;

综合指数文档:

你是否考虑过在
期间(u year
列中添加一个指数?@TimBiegeleisen你从我口中得到的。也许他也可以尝试使用CAT_NO,如果这是一个经常访问的项目看看MySQL的
explain
功能,它有助于确定哪些索引是有意义的:你能告诉我如何在period_year和CAT_NO上添加索引,我尝试过,但它给我带来了一个错误吗@Timbiegeleisen列PERIOD_YEAR在哪里?我没有在这里键入,但它在我的实时数据库中。我已经更新了答案,请尝试复合索引Shey@Wang Steven,如果cat_no用作子分区,PERIOD_YEAR用作按范围分区,我们还可以在您更新时使用唯一索引吗。
alter table fa_nls_pd_test add unique index(CAT_NO,period_year);