gpt4 book ai didi

mysql - MySQL 表过度索引。我该如何补救?

转载 作者:行者123 更新时间:2023-11-29 14:04:07 25 4
gpt4 key购买 nike

我有一个包含 300 万行和 6 列的表。问题是我的 mysqld 服务器不会生成任何查询的输出,并且只会超时。
然后我读了here过度索引可能涉及将数据从内存交换到磁盘的次数过多,并可能导致服务器速度变慢。
所以我运行了一个查询 ALTER TABLE <Tbl_name> DROP INDEX <Index_name>; 。该查询已运行 10 小时,但尚未完成。

  1. 预计会运行这么长时间吗?
  2. 是否有更好的方法来删除/更改我的索引?

编辑 - 添加了 SHOW CREATE TABLE 输出

| Sample | CREATE TABLE `sample` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`FiMD5` varchar(32) NOT NULL,
`NoMD5` varchar(32) NOT NULL,
`SeMD5` varchar(32) NOT NULL,
`SeesMD5` varchar(32) NOT NULL,
`ImMD5` varchar(32) NOT NULL,
`Ovlay` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `FiMD5_3` (`FiMD5`),
KEY `ID` (`ID`),
KEY `ID_2` (`ID`),
KEY `pIndex` (`FiMD5`),
KEY `FiMD5_` (`FiMD5`,`NoMD5`)
) ENGINE=InnoDB AUTO_INCREMENT=3073630 DEFAULT CHARSET=latin1 |

最佳答案

也许执行以下操作会更快:

  1. 首先选择... INTO OUTFILE
  2. 使用TRUNCATE TABLE删除所有内容
  3. 修改表格
  4. 使用LOAD恢复数据

如果第 2 步花费的时间太长,也许可以删除该表并重新创建它。

关于mysql - MySQL 表过度索引。我该如何补救?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com