首页 > 解决方案 > MySQL 8 和 PostgreSQL 中的“过程分析”类似物

问题描述

在旧版本中,MySQL有一个分析现有表的选项:

SELECT * FROM  `table_name` PROCEDURE ANALYSE()

这似乎很有用,开发人员可以分析现有表,查看建议(例如使用 smallint 代替 int)并考虑其中的一些。

在 MySQL 8.0PROCEDURE ANALYSE()中被删除。我发现的原因:

“推理:多次讨论 PROCEDURE ANALYZE 语法是一种不合时宜且几乎未使用的非标准语法扩展”。

这是唯一的原因还是自动分析表格是一种不好的做法(即使只是一种额外的分析工具)?

"Procedure Analyse"我在 Postgresql 中也找不到任何类似的东西。

我知道我可以分析查询,但我认为分析表结构以在新表的体系结构中考虑它是有用的。

标签: mysqlpostgresql

解决方案


此功能已消失,并且在文档中没有提供或引用我可以找到的明确继任者。我试图给负责这件事的人发电子邮件,他不再在 MySQL 工作,而且他的个人电子邮件已经死了,所以也许他的工作被缩短了。遗憾的是,他们删除了用户依赖的 PROCEDURE ANALYZE,却没有提供他们谈论的替代存储过程。

可以使用以下语句手动分析表:

select MAX(LENGTH(address1)) from places;
select address1 from places where length(address1) > 99;

推荐阅读