[英]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.