我有一個VIEW
這是SLOW。我不喜歡VIEW語句,因爲有很多JOINS
和UNION
。如何優化此VIEW語句?
以下是查看語句。
Create VIEW NewView AS
SELECT t2.* FROM Table1 t1
JOIN Table2 t2
ON t1.Column1 = t2.Column1 AND t1.Column2 = t2.Column2
WHERE t1.Column3 !='String'
UNION
SELECT t1.*, 'Add this string to the Last Column' FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.Column1 = t2.Column1 AND t1.Column2 = t2.Column2
WHERE t2.Column1 is null OR t1.Column3 ='String'
ORDER BY Column 4
基本想法是,如果記錄存在於Table1
和Table2
,從Table2
記錄應從Table1
覆蓋的記錄。我怎樣才能優化這個?
我在這兩個表中都有一個主鍵id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,但我不知道如何將它與視圖集成在一起。我希望視圖具有主鍵或複合鍵。我無法使用其他列,因爲所有列都可以具有空值和重複值。
你需要'ORDER BY'在'VIEW'? – onedaywhen
我不知道我會將一個'UNION'和兩個'JOIN'分類爲「批次」 –
我確實需要在視圖本身中使用ORDER BY。如果沒有,我必須在從視圖中獲取數據的每個查詢中進行ORDER BY(frond end)。這是我想要的默認顯示。 – theking963