MySql - 从包含大量连接表的主表中选择

时间:2018-05-15 05:23:35

标签: mysql sql aws-aurora

我有一个主表,它通过一对多关系与其他10个表相关。

例如:

main Table           table1               table2
----------           -------              -------
id *                 id*                  id*
name                 mainTableId **       mainTableId **
                     column1              column2

我试过了:

SELECT *
FROM main_table
LEFT OUTER JOIN table1 On table1.mainTableId = main_table.id
LEFT OUTER JOIN table2 On table2.mainTableId = main_table.id
...

问题是我收到了很多结果,因为main_table中的每个结果都会乘以table1table2等中的所有结果。

我只想使用一个SELECT查询,因为查询数据库10次需要很长时间。

从每个表中检索100个结果足以满足我的需求,但尝试执行以下操作会导致错误limit is not supported with a sub query

LEFT OUTER JOIN table1 WHERE id in (
    SELECT id FROM table1 WHERE mainTableId = mainTable.id LIMIT 100
)

我正在使用AWS Aurora。如何改进此查询?

1 个答案:

答案 0 :(得分:1)

i

对于第二个问题,您可以从其他表中获取100行,然后加入它们!

SELECT *
FROM main_table
LEFT OUTER JOIN table1 ON main_table.id = table1.mainTableId
LEFT OUTER JOIN table2 ON main_table.id = table2.mainTableId
...