0

我目前使用MyISAM引擎将数据插入到表中,

我希望LOAD DATA通过在 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语句中定义的索引?

4

1 回答 1

1

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

根据手册

ALTER TABLE ... DISABLE KEYS 告诉 MySQL 停止更新非唯一索引。(...) 当非唯一索引被禁用时,它们会被 SELECT 和 EXPLAIN 等语句忽略,否则会使用它们。

因此,主键仍将用于表单的查询

SELECT * FROM TableName WHERE id <=99999

但是,不能仅禁用表子集上的键。

于 2013-01-23T09:36:40.357 回答