优化的连接查询与3个表

时间:2016-03-01 06:52:17

标签: mysql sql mysql-workbench

我有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。有人可以更正我的查询,或者是表格设计。

1 个答案:

答案 0 :(得分:1)

基本上你应该

a)在列上添加索引

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。

相关问题