如何索引MySQL中预先存在的数据?

时间:2014-08-20 14:48:50

标签: mysql database indexing innodb

我在MySQL innodb表上创建了一个索引,我也导入了数据 。该表是在导入表时由MySQL创建的。我什么也没做。它只是使用GUI导入数据。

然后我尝试添加一个索引:

ALTER TABLE my_table ADD INDEX idx_myindex (some_column);

我总是得到:

查询OK,0行受影响(0.22秒) 记录:0重复:0警告:0

我读到了这个问题:

MySql Add Index : 0 Rows Affected

如何使我的表中已包含数据的索引实际影响该行的列?我正在使用innoDB。

我是否需要导出,删除所有数据,重新导入(进行索引更新)?

1 个答案:

答案 0 :(得分:3)

MySQL 5.1及更早版本在创建索引时报告了N行受影响,而N始终是表中的行数。

从MySQL 5.5.5开始,他们停止报告该数字,并确定所有DDL语句的受影响行始终为零。见http://bugs.mysql.com/bug.php?id=21818

请放心,创建索引会自动使用值填充它。您可以在创建索引之前和之后运行SHOW TABLE STATUS LIKE 'mytable'来验证这一点。显示的其中一个字段是index_length,在添加二级索引后会增加。