我不喜歡在兩個地方定義相同的東西,如果我能避免它。我認識到下面的兩個查詢處理兩個不同的表,但這些表基本上擁有相同類型的數據(不同的謂詞保證兩個查詢),我認爲下面的兩個投影是「定義相同的東西在兩個地方「。重構SQL投影?
當/如果我在以後修改這些查詢,包括不同的欄目,我敢肯定,我會永遠想的預測保持一致。
假設,並且不使用動態SQL,並沒有「*」在任何投影(在我的生產環境不允許的),我可以定義「columnset」一次,在這兩個查詢使用它?
SELECT columnA
, columnB
, columnC
FROM Data
SELECT columnA
, columnB
, columnC
FROM DataArchive
你有數據存儲在兩個地方。無論如何,爲了檢索任何給定調用所需的數據,您需要知道要從中檢索哪組數據。發佈的SELECT ... UNION ALL ...解決方案只會導致需要一個查詢,但您需要添加「開關」來控制實際查詢的集合。你可以把它添加到你的代碼庫嗎?我更喜歡Blixt的視圖實現,但我也建議考慮將這些表合併成一個表。 (這聽起來像是「當前/小型/常用套裝與歷史/極度/罕用套裝」的情況,但你永遠不知道。) – 2009-06-10 18:27:20