目前,我使用MyISAM engine将数据插入到表中,
我希望通过在加载数据完成后构建索引来优化LOAD DATA (预先禁用键并在其完成后启用它们)。
从LOAD DATA CONCURRENT文档中,加载数据应该将记录添加到表的末尾,同时我感兴趣的是对同一表的并发读取将继续使用键。我保证读取操作只会尝试从表中读取信息,直到LOAD DATA CONCURRENT启动前的最后一个可用索引(自动递增id)为止。
例如:
LOAD DATA CONCURRENT将从索引100000开始添加数据,并自动将索引增加到200000。
同时,可能会发生SELECT * FROM TableName WHERE id <=99999 AND ...语句。
是否可以仅在本地禁用LOAD DATA CONCURRENT语句的键,以便读取操作仍将在其SELECT语句中使用定义的索引?
发布于 2013-01-23 09:36:40
我假设1.您的id列是主键,2.您计划使用ALTER TABLE ... DISABLE KEYS。
根据手册
换桌子..。禁用键告诉MySQL停止更新非唯一索引。(...)虽然非唯一索引被禁用,但对于否则将使用它们的SELECT和EXPLAIN等语句,它们将被忽略。
因此,主键仍将用于表单的查询。
SELECT * FROM TableName WHERE id <=99999但是,不可能仅在表的子集上禁用键。
https://stackoverflow.com/questions/14475973
复制相似问题