MySQL 8 和 PostgreSQL 中的“PROCEDURE ANALYSE”类似物

anv*_*lad 6 mysql postgresql

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

SELECT * FROM  `table_name` PROCEDURE ANALYSE()
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

lin*_*eak 3

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

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

select MAX(LENGTH(address1)) from places;
select address1 from places where length(address1) > 99;
Run Code Online (Sandbox Code Playgroud)