我有一个InnoDB
表,该表包含历史上多年的数据以及将来的数据。我需要定期更新该表,以便从可用的第三方来源添加数据。
因此,我按年份对表进行了分区(p2004 ... p2018)
该表还在许多字段上建立了索引。
要更新,我正在执行以下操作:
(1)截断分区p2018
(2)LOAD DATA INFILE ...(仅包含2018年数据的文件)...
该表的定义清楚地表明,2018年数据仅位于分区p2018中(我已经通过原始数据文件上的时间戳验证了分区)。
我的问题是:LOAD DATA INFILE命令完成时(或期间),是否会将p2018中放置的数据编入索引?还是我需要发出另一个命令来索引p2018中的数据?如果是这样,命令ALTER TABLE tablename REBUILD PARTITION p2018
正确的命令?
我花了大约20分钟的时间进行谷歌搜索(包括StackExchange),但在此方面找不到很好的指导。
最佳答案
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
....
您只需要提到分区名称,例如:
LOAD DATA INFILE 'p2018.csv'
INTO TABLE tbl_year
PARTITION 'p2018'
...
告诉我们您是否需要更多信息。