我在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。
我是否需要导出,删除所有数据,重新导入(进行索引更新)?
答案 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
,在添加二级索引后会增加。