2016-03-01 104 views
1

我有3個表優化的連接查詢有3個表

user1[user1_id,name], 

user2[user2_id, user1_id], 

user3[user3_id,user1_id] 

我的第一查詢

select a.user1_id, b.user2_id, c.user3_id from user1 a 
left join user2 b on b.user1_id = a.user1_id 
left join user3 c on c.user1_id = a.user1_id 

my second query is 

select a.user1_id, b.user1_id from user2 a 
left join user3 b on b.user1_id = a.user1_id 

我用這所有的查詢。

我的問題是如何優化我的查詢或優化查詢時間,因爲當我使用這兩個查詢查詢時間是15.767s與18592返回值。有人可以糾正我的查詢,或者它是表格設計。

+0

使用第一個選擇查詢c.user1_id完成後,爲什麼如果你去第二個查詢。 –

+0

您是否嘗試將索引添加到要加入的列中? – Agis

+0

我嘗試第二個查詢另一個測試。 – mics

回答

1

基本上你應該

一)列上添加索引

CREATE INDEX IDX_USER1_USERID ON USER1(USER_ID); 
CREATE INDEX IDX_USER2_USERID ON USER2(USER_ID); 
CREATE INDEX IDX_USER3_USERID ON USER3(USER_ID); 

,這將大大減少查詢時間

b)減少的結果集又名傳輸的數據量

用戶ID始終相同。不要三次選擇它,並將運輸數據減少到1/3。