使用 54 个 SELECT 优化视图 -- 使用流程进行更新



我开始了一份新工作,正在查看他们希望我熟悉的一些观点。

我正在经历的一个视图有54 个选择。 在浏览之前和之后,我从未见过如此庞大的视图,我相当确定我可以优化它。

我正在寻找一种更简单的方法来比较每个选择之间的 JOIN,以找到共性,而无需手动筛选它们。

我相当确定这就是我必须做的,但我希望有人能有一种更简单或更有效、更省时的方式来做到这一点......

有人吗?:)

更新 12/4/2019: TLDR;我将每个主 SELECT 分隔到它自己的文件中,然后在完整视图代码文件上使用 Notepad++,我找到了公共值,将每个单独的 SELECT 排序和组织到一个名为公共值的文件夹中。 从那里,我使用 WinMerge 将各自文件夹中的每组 SELECT 相互比较,以查找差异和共性。 然后,我开始使用CTE重构和最小化过多的代码(以及表调用>.<((因为这是Oracle和View(。


我最终通过查找视图中作为列的字段名称之一来拆分视图 SELECT。这意味着我会得到每个 SELECT 的开头。

然后,我将每个文件复制并粘贴到不同的.sql文件中。我还将完整视图保存到它自己的.sql文件中。

使用Notepad++,我搜索了视图列名称的每个实例,并删除了列值,这是视图所需的主要信息。使用该信息,我根据该值将每个 SELECT 分组到一个文件夹中

一旦我把所有的 SELECT 放到各自的文件夹中,我就使用 WinMerge 将 SELECT 放到它们所在的文件夹中的其他文件夹中。 这有助于我找到共性和差异性,其中一些差异很难将数据源表与其他差异混为一谈。

从那以后,我一直在更新、重构和修复一次一个文件夹分组 SELECT 的视图。

我所在的项目让我触摸了我用来将 SELECT 组织到文件夹中的每个主要代码值,所以我最终将重新编码整个视图。 :)

识别相似的代码行是一个难题,据我所知,Clone Doctor是唯一可以为PL/SQL做到这一点的程序。

我只用过一次,大约 10 年前。 但我记得我很惊讶它发现的不同代码行在深层次上确实是重复的。 它并不完美,有一些错误,需要一段时间才能开始工作。 但是有一个免费试用版。

最新更新