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

3 mysql indexing performance 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)

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

Pac*_*ier 7

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

show keys in table_name
Run Code Online (Sandbox Code Playgroud)
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| 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 |               |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
Run Code Online (Sandbox Code Playgroud)

如果该键被禁用,该Comment列将显示disabled。如果启用,该列将为空:

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


Gal*_*alz 6

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

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

正如你在这里看到的那样.要自己查看警告,请在运行SHOW WARNINGS;后运行ALTER.