我目前使用 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
语句中定义的索引?
答案 0 :(得分:1)
我假设1.您的id
列是主键,而2.您打算使用ALTER TABLE ... DISABLE KEYS
。
根据the manual:
ALTER TABLE ... DISABLE KEYS告诉MySQL停止更新非唯一索引。 (...)虽然非唯一索引被禁用,但是对于SELECT和EXPLAIN之类的语句会忽略它们,否则它们会使用它们。
因此,主键仍将用于表单
的查询SELECT * FROM TableName WHERE id <=99999
但是,无法仅禁用表的子集上的键。