从3个表中获取记录的最有效方法是什么,使用所有表中存在的id来链接数据?
第一个表:id不是主键。许多记录具有相同的id值。该表的主键是“primary_id”
第二个表:id是主键
第三个表:id是主键
所以我们有一个关系,从第一个表到“id”的另外两个表是多对一的。当然,第二到第三个表在“id”上是一对一的关系,因为“id”是它们两者的主键。
我想从第一个表格中选择5个记录(假设按第一个表格排序 primary_id asc - 不表格中的共享 id )但我也想要其他两张桌子的记录。
我应该
table1.primary_id | table1.id | table1.some_data | table2.some_data | table3.some_data
--------------------------------------------------------------------------------------
1 | 22 | oranges | fruit seller | company
4 | 22 | watermelons | fruit seller | company
13 | 22 | bananas | fruit seller | company
15 | 22 | pears | fruit seller | company
19 | 22 | beans | fruit seller | company
你可以理解,在table2中,id是主键,id = 22有some_data =水果卖家,而在table3中id是主键,id = 22有some_data = company
我应该使用什么来获得表1的primary_id的前5条记录,并获得其他两个表中的记录,如我演示的那样?
加入?一个子查询?我关心的是表现。
答案 0 :(得分:0)
尝试:
select t1.primary_id, t1.id, t1.some_data, t2.some_data, t3.some_data
from table2 t2
join table3 t3 on t2.id = t3.id
cross join (select * from table1 where id = 22 order by primary_id limit 5) t1
where t2.id = 22
确保table1.id上有索引;如果id,primary_id(按此顺序)有索引,则查询可能执行得更好。