Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取视图之间的mysql依赖关系?_Mysql_Sql_View_Graph - Fatal编程技术网

如何获取视图之间的mysql依赖关系?

如何获取视图之间的mysql依赖关系?,mysql,sql,view,graph,Mysql,Sql,View,Graph,我有一个mysql数据库,有60多个视图,有些是辅助视图,有些是最终视图。它们之间有依赖关系。当然,这会给我带来性能问题,但我没有设计这个数据库和系统 为了加快一些报告的速度,我将最终视图具体化为表。我也可以通过具体化辅助视图来加速这个过程,然后使用它们来具体化其他视图,从而避免对辅助视图的重新处理 为此,我需要一种方法来查看视图之间的依赖关系,以便以正确的顺序具体化视图。如果我能将这些信息输入到图形中(例如,使用Graphviz或Tikz等工具),那就太好了 除了手动分析每个视图之外,还有什么

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

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

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


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

在许多查询设计器中可以可视化单独视图的查询,但数据库中的整个视图结构仍然不可观察

  • Oracle SQL Developer似乎将视图呈现为单独的对象
  • 呈现视图图形,该图形基于字段名,而不是FROM子句

很难管理约50个相互关联的视图。我还没有找到任何适合该任务的工具。

我使用以下查询从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模块将依赖项可视化为树结构。如果有人感兴趣,我可以分享剧本。 编辑:注意,我刚刚意识到,如果一个视图名称是另一个视图名称的子字符串,则此查询可能会导致问题。如果有人能提出改进建议,请提出

编辑:注意,我刚刚意识到,如果视图名称是另一个视图名称的>子字符串,则此查询可能会导致问题。如果有人能提出改进建议,请提出

我认为%旁边的`符号确实消除了子字符串问题和其他一些问题。实际上,这是可行的。我看到的唯一问题是,当您有一个数据库,其中一些表名与列名相同,但在正确的数据库设计中,情况并非如此

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,'`%')