gpt4 book ai didi

sql - 优化 SQL 查询 - 连接 4 个表

转载 作者:行者123 更新时间:2023-12-03 16:46:43 25 4
gpt4 key购买 nike

我正在尝试加入 4 张 table 。目前我已经通过这样做实现了它。

    SELECT columns
FROM tableA
LEFT OUTER JOIN tableB ON tableB.address_id = tableA.address_id
INNER JOIN tableC ON tableC.company_id = tableA.company_id AND tableC.client_id = ?
UNION
SELECT columns
FROM tableA
LEFT OUTER JOIN tableB ON tableB.address_id = tableA.gaddress_id
INNER JOIN tableD ON tableD.company_id = tableA.company_id AND tableD.branch_id = ?

tableC 和 tableD 的结构非常相似。假设 tableC 包含客户的数据。 tableD 包含客户分支的数据。表 A 是公司,表 B 是地址 我的目标是从表 A 中获取数据,这些数据连接到表 B(所有有地址的公司)以及表 D 和表 C 中的所有数据。

这很好,但我担心这会很慢。

最佳答案

我认为你可以这样欺骗它:

UNION C之间, D并且只有加入查询的其余部分,它应该显着改善查询:

SELECT columns
FROM TableA
LEFT OUTER JOIN tableB ON tableB.address_id = tableA.address_id
INNER JOIN(SELECT Columns,'1' as ind_where FROM tableC
UNION ALL
SELECT Columns,'2' FROM TableD) joined_Table
ON (joined_Table.company_id = tableA.company_id AND joined_Table.New_Col_ID= ?)
New_Col_ID -> 只需同时选择 branch_idclient_id在同一列中并将其别名为 New_Col_ID管他呢

此外,您可以索引表(如果尚不存在):
TableA(address_id,company_id)
TableB(address_id)
TableC(company_id,client_id)
TableD(company_id,branch_id)

关于sql - 优化 SQL 查询 - 连接 4 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com