mysql - 是否有更新 mysql 列类型所需的过程?

标签 mysql types

我正在尝试优化我的 mysql 表 (MyISAM),我用 phpmyadmin 更改了一些列类型,主要是从 int 到 smallint、medium int 等。在我这样做之后,mysql 真的陷入了困境,服务器负载变得非常高.我在一个实时站点上执行此操作,我认为这是问题所在,但即使在将站点置于维护模式并等待负载下降之后,负载仍然会变得疯狂。最后,我不得不删除表并使用它们的原始列类型重新创建它们,以便事情顺利恢复......那么在更改列类型之前和之后我应该做些什么特别的事情吗?

连接具有两种不同列类型的表也会产生问题吗? IE。 id INT(11) 加入 MEDIUMINT(8)。我想我曾经这样做过。

最佳答案

你说:

"Would joining tables with two different column types also create a problem? I.E. id INT(11) joining with MEDIUMINT(8). I think at one point I did that."

是的。这可能会降低性能,因为当您对 2 个不同类型的列进行连接时,RBDMS 必须对其中一列中的每个值执行动态类型转换以匹配另一列中的类型,以便它可以执行比较。出于这个原因,您加入的列应该始终是相同的类型,最好也有一个外键(如果您使用的是 InnoDB 表类型)。

关于mysql - 是否有更新 mysql 列类型所需的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545059/

相关文章:

types - 将分隔的字段合并为一个

php - 通过PHP在MySQL中插入Jquery

mysql - 从单行中选择重复项?

c++ - size_t 在哪里定义的?

jquery - TypeScript 中 jQuery 对象的类型是什么?

performance - 声明 struct 字段的类型与 Julia 中的结构本身的类型相同

php - PDO 多选查询

c++ - 如何使用Qt获取数据库大小?

php - Laravel SQL 按 WHERE IN Group By 更新行

math - 这是什么类型的数学 : a -> b -> c