我正在使用MySQL数据库,它有两个MyISAM表1.主(inf_article_details)表有超过100万条记录和2.临时(temp_inf_article_details)表有大约50,000+条记录。这些表结构相同,只有一列(BIGINT作为数据类型)作为主键。数据定期从不同的数据源提供程序填充到临时表中,并且我有一个预定的作业,它将数据从临时表推送到主表。
仅供参考,主表在KEY上划分为20个分区
主表的索引信息(inf_articles_details)如下:
显示来自inf_articles_details的索引;
临时表的索引信息(temp_inf_articles_details)如下:
显示temp_inf_articles_details的索引;
解释主表的结果如下:
解释select * from inf_articles_details
解释临时表的结果如下:
解释select * from temp_inf_articles_details
主表(inf_articles_details)结构(总共有70多列)
创建表
inf_articles_details
(
ard_ean_code
bigint(20)unsigned NOT NULL,
ard_provider_reference
bigint(20)无符号DEFAULT NULL,
ard_reference
varchar(20)NOT NULL,
ard_modified_date
日期时间DEFAULT NULL,
PRIMARY KEY(ard_ean_code
),
KEYidx_ard_modified_date
(ard_modified_date
)
)ENGINE = MyISAM DEFAULT CHARSET = utf8 / *!50100 PARTITION BY KEY()PARTITIONS 20 * /
临时表(temp_inf_articles_details)结构是(大约有70多列)
创建表
temp_inf_articles_details
(
tard_ean_code
bigint(20)unsigned NOT NULL,
tard_provider_reference
bigint(20)无符号DEFAULT NULL,
tard_status
tinyint(3)unsigned NOT NULL DEFAULT'0',
PRIMARY KEY(tard_ean_code
),
KEYidx_status
(tard_status
)
)ENGINE = MyISAM DEFAULT CHARSET = utf8
作为数据更新任务的一部分,我们将这两个表连接到“ard_ean_code& tard_ean_code”,并使用临时表中的值更新主表中的现有行,并将新行从临时表插入到master中。但是这种数据更新花费了太多时间来从临时表插入/更新数据到主表。
我是否需要进行任何调整以提高性能?
感谢。
答案 0 :(得分:1)