mysql - 如何获取 View 之间的mysql依赖关系?

标签 mysql sql view graph

我有一个 mysql 数据库,有 60 多个 View ,一些是辅助的,一些是最终的。他们之间有依赖关系。这当然会给我带来性能问题,但我并没有设计这个数据库和系统。

为了加快某些报告的速度,我将最终 View 具体化为表格。我也可以通过具体化辅助 View 来加快这个过程,然后使用它们来具体化其他 View ,从而避免重新处理辅助 View 。

为此,我需要一种方法来查看 View 之间的依赖关系,以便我可以以正确的顺序具体化 View 。如果我可以将该信息输入到图形中(例如使用 Graphviz 或 Tikz 等工具),那就太好了。

除了手动分析每个 View 之外,还有什么方法可以做到这一点吗?

最佳答案

我使用以下查询从 FROM 子句中获取依赖项:

SELECT  views.TABLE_NAME As `View`, tab.TABLE_NAME AS `Input`
FROM information_schema.`TABLES` AS tab 
INNER JOIN information_schema.VIEWS AS views 
ON views.VIEW_DEFINITION LIKE CONCAT('%',tab.TABLE_NAME,'%')

然后我将输出提供给一个 python 脚本,该脚本使用 ete2 模块将依赖项可视化为树结构。如果有人感兴趣,我可以分享脚本。 编辑:注意,我刚刚意识到,如果 View 名称是另一个 View 名称的子字符串,则此查询可能会导致问题。如果任何机构可以提出改进建议,请提出。

关于mysql - 如何获取 View 之间的mysql依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14603740/

相关文章:

mysql - regexp_like 在 MySQL 中有类似的功能吗?

mysql - 在 Oracle 中查找时间时为 "day of month must be between 1 and last day of month"

mysql - 如何通过对 MySQL 表中的一个表中的项目进行分组来获取有限的行

SQL NOSQL 混合可能与否?

java - 使用 View.GONE 时,RelativeLayout Visibility 不起作用

mysql - 如何将数据从 Mongo DB 同步到 Mysql?

php - 在多对多关系设置中选择

sql - 使用递归 CTE 处理日期逻辑

php - MVC : Why bother "sending" data to the View

javascript - 单页面主干应用程序中 View 之间的转换