Mysql 如何检查启用/禁用键是否有效?
我有一个带有索引Mysql 如何检查启用/禁用键是否有效?,mysql,performance,indexing,bulkinsert,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.
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)
mysql>altertablexxx禁用键;
查询正常,0行受影响,1条警告(0.00秒)
mysql>alter table xxx enable keys;
查询正常,0行受影响,1条警告(0.00秒)
如何确保启用/禁用密钥正常工作?正如您所猜测的,InnoDB不支持禁用/启用密钥。你得到的警告是: 代码1031-表存储引擎 “table_name”没有此选项 如你所见。
要自己查看警告,请运行
SHOW WARNINGS
运行ALTER
后,要检查钥匙是否已启用/禁用,请运行:
show keys in table_name
如果键被禁用,则注释
列将显示禁用
。如果启用,该列将为空:
[Comment
列显示]有关索引的信息,这些信息未在其自己的列中描述,例如已禁用
(如果索引已禁用)
控制台告诉您的“1警告”是什么?索引列
唯一吗?@9000:在哪里可以查看警告?在/var/lib/mysql/mysql错误中找不到它。err@Scrum迈斯特:起初它是唯一的,然后我删除了索引并重新创建它使其非唯一,但仍然禁用和启用键需要0秒(即使在我插入800万行之后,启用键也需要0秒)。在mysql控制台上应该可以工作。在什么扭曲的引擎/版本中以及如何实现这一点P
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| 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 | |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+