[英]Refactoring SQL
我从未见过像您提供的样本那样详尽的清单。
我见过的最有效的 sql 重构方法是使用with 语句。 它允许您将 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
我喜欢它的另一件事是,这种形式允许您将过滤与加入分开。 因此,您可以经常复制子查询,并单独执行它们以查看与它们关联的结果集。
有一本关于这个主题的书:“重构数据库”。 我还没读过,但它在亚马逊上获得了 4.5/5 星,并且是由 Scott Ambler 合着的,这两个都是好兆头。
不是我曾经发现过。 我主要完成了 SQL Server 工作,标准技术是:
如果您仍然遇到问题,许多报告并不依赖于 100% 的实时数据 - 尝试按计划(例如隔夜)预先计算部分数据(或全部)。
与技术无关,但这个问题可能会帮助您找到 SQL 重构工具:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.