2014-10-31 61 views
0

我需要知道是否可以將子查詢的結果編入索引以便與其他結果進行連接。 我有查詢:索引加入查詢的結果

Select A.*, B.* from (select * from table1 where condition1 = 1) A join (select * from table2 where condition2 = 0) A on A.c1 = B.c1 and A.c2 = B.c2

我認爲我需要指數的子查詢的結果,以提高響應速度:

select * from table1 where condition1 = 1 (Id like to index the fields c1, c2) 

select * from table2 where condition2 = 0 (Id like to index the fields c1, c2) 

這可能嗎?我想通過索引子查詢來完成。 謝謝

回答

0

在子查詢上有一個索引是沒有用的。計算索引需要掃描子查詢的整個結果,所以沒有任何好處。

但是,如果子查詢的結果很少發生更改,則可以添加另一個存儲中間結果的表並將索引添加到該表。如果table1table2中的數據已更新,請確保更新附加表。使用觸發器可以實現自動更新。

+0

當我執行的連接查詢,時間超過40分鐘再予。這兩個查詢的結果有70000條記錄。我相信在執行連接之前必須有一種方法來索引這兩個結果。在foxpro它只需要少於五分鐘,我確定我需要索引它們。 – 2014-10-31 21:09:23

+0

正如我所說的,您可以添加額外的表來存儲子查詢並在這些表上添加索引。但是爲子查詢添加索引是沒有意義的。 – andy 2014-10-31 21:13:56

+0

安迪感謝您的回覆。請不要忘記,如果沒有任何意義,可以索引? – 2014-10-31 21:19:07