MySQL,LOAD DATA CONCURRENT LOCAL,disable&启用密钥

时间:2013-01-23 09:11:39

标签: mysql concurrency indexing load-data-infile

我目前使用 MyISAM 引擎

将数据插入表格中

我希望通过在LOAD DATA完成后构建索引来优化LOAD DATA预先禁用密钥并在完成后启用它们)。

LOAD DATA CONCURRENT文档中,加载数据应该将记录添加到表的末尾,同时我感兴趣的是对同一个表的并发读取将继续使用键。我保证读操作只会尝试从表中读取信息 <{1}}开始之前的最后一个可用索引(自动递增的id)。

e.g。

LOAD DATA CONCURRENT将从索引100000开始添加数据,并自动将索引增加到200000.

同时可能发生LOAD DATA CONCURRENT声明。

是否可以仅在SELECT * FROM TableName WHERE id <=99999 AND ...语句中本地禁用键,以便读操作仍然使用其LOAD DATA CONCURRENT语句中定义的索引?

1 个答案:

答案 0 :(得分:1)

我假设1.您的id列是主键,而2.您打算使用ALTER TABLE ... DISABLE KEYS

根据the manual

  

ALTER TABLE ... DISABLE KEYS告诉MySQL停止更新非唯一索引。 (...)虽然非唯一索引被禁用,但是对于SELECT和EXPLAIN之类的语句会忽略它们,否则它们会使用它们。

因此,主键仍将用于表单

的查询
SELECT * FROM TableName WHERE id <=99999

但是,无法仅禁用表的子集上的键。