是否有任何类似于此列表的重构 SQL 的正式技术 here这是代码吗?
我目前正在对特定报告进行大规模查询,我确信这里有很大的重构空间,而我只是在一点一点地摸索着。
最佳答案
我从未见过像您提供的示例那样详尽的列表。
我见过的重构sql最有效的方法是使用with statement 。 它允许您将 sql 分解为可管理的部分,这些部分通常可以独立测试。此外,它还可以重用查询结果,有时可以使用系统临时表。这是非常值得花精力去研究的。
这是一个愚蠢的例子
WITH
mnssnInfo AS
(
SELECT SSN,
UPPER(LAST_NAME),
UPPER(FIRST_NAME),
TAXABLE_INCOME,
CHARITABLE_DONATIONS
FROM IRS_MASTER_FILE
WHERE STATE = 'MN' AND -- limit to Minne-so-tah
TAXABLE_INCOME > 250000 AND -- is rich
CHARITABLE_DONATIONS > 5000 -- might donate too
),
doltishApplicants AS
(
SELECT SSN, SAT_SCORE, SUBMISSION_DATE
FROM COLLEGE_ADMISSIONS
WHERE SAT_SCORE < 100 -- Not as smart as the average moose.
),
todaysAdmissions AS
(
SELECT doltishApplicants.SSN,
TRUNC(SUBMISSION_DATE) SUBMIT_DATE,
LAST_NAME, FIRST_NAME,
TAXABLE_INCOME
FROM mnssnInfo,
doltishApplicants
WHERE mnssnInfo.SSN = doltishApplicants.SSN
)
SELECT 'Dear ' || FIRST_NAME ||
' your admission to WhatsaMattaU has been accepted.'
FROM todaysAdmissions
WHERE SUBMIT_DATE = TRUNC(SYSDATE) -- For stuff received today only
我喜欢它的另一件事是,这种形式允许您将过滤与连接分开。因此,您可以经常复制子查询,并单独执行它们以查看与它们关联的结果集。
关于sql - 重构SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507359/