我有一個查詢運行,但速度非常慢。涉及多個表格,它們都具有相同的用於日期和ID的命名列。由於行數很大(3M +),因此需要按日期進行過濾以加快速度。我做了一個基本的加入工作,但我想知道如何進一步優化。許多連接和日期過濾器的查詢優化
運行非常緩慢看起來像查詢:
select
A.date
,A.id
,A.col3
,B.id2
,B.colR
,B.colS
,C.colX
,C.colY
,C.colZ
from table1 A
left join table2 B on A.id = B.id
left join table3 on B.id2 = C.id2
where A.date = '2017-06-01' and A.col3 = 'test' and B.id2 is not NULL
現在表2的date
場還有,我想過濾的,以及哪些。我重寫了查詢,像這樣和這個運行良好:
select
A.date
,A.id
,A.col3
,B.id2
,B.colR
,B.colS
from
(select date, id, col3 from table1 where date='2017-06-01' and col3='test') A
left join (select date, id, colR, colS from table2 where date='2017-06-01') B on A.id=B.id where B.colR is not NULL
但現在來的我的表3.我拍着另一left join
到接近該如何加入問題的加盟我已經似乎已經不工作方式與我在最初的,經過很少優化的查詢中接近的方式一樣。該方法如下所示:
select
A.date
,A.id
,A.col3
,B.id2
,B.colR
,B.colS
,C.colX
,C.colY
,C.colZ
from
(select date, id, col3 from table1 where date='2017-06-01' and col3='test') A
left join (select date, id, id2, colR, colS from table2 where date='2017-06-01') B on A.id=B.id where B.colR is not NULL
left join (select id2, colX, colY, colZ from table3) C on B.id2 = C.id2
如果上面的查詢不能正常工作,應如何處理表3上的連接?我得到特定的錯誤是:
Msg 103010, Level 16, State 1, Line 1 Parse error at line: 33, column: 1: Incorrect syntax near 'left'.
這是在第二left join
我在上面的語句。
而我在你的問題是什麼損失。我得到你有一個運行緩慢的查詢。你的問題有幾個疑問。 –
澄清問題。我可以讓左連接工作得很好,但我想再次與另一個表連接,並且我一直收到一個錯誤,提示不是這樣做的方式。 – AI52487963
如果您遇到錯誤,您應該確定包含該錯誤 –