如何检查启用/禁用键是否有效?

时间:2011-02-12 22:05:01

标签: mysql performance indexing bulkinsert

我有一个带有索引varchar(256)列的表。

为了加快批量插入,我禁用了密钥,插入了超过1000万个条目,然后在插入完成后重新启用密钥。

令人惊讶的是,启用/禁用键花了很长时间

mysql> alter table xxx disable keys;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> alter table xxx enable keys;
Query OK, 0 rows affected, 1 warning (0.00 sec)

如何确保启用/禁用密钥正常工作?

2 个答案:

答案 0 :(得分:6)

正如您所猜测的,InnoDB不支持DISABLE / ENABLE KEYS。你得到的警告是:

  

代码1031 - 表存储引擎   'table_name'没有此选项

正如您所见here。 要自行查看警告,请在运行SHOW WARNINGS;后运行ALTER

答案 1 :(得分:2)

要检查您的密钥是否已启用/禁用,请运行:

show keys in table_name
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment  | Index_comment |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| table123 |          0 | PRIMARY  |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |          |               |
| table123 |          1 | id       |            1 | id          | A         |        NULL |     NULL | NULL   |      | BTREE      | disabled |               |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+

如果密钥已停用,则Comment列会显示disabled。如果已启用,则列将为空:

  

[Comment列显示]有关未在其自己的列中描述的索引的信息,例如disabled如果索引被禁用。 ➫➫➫