gpt4 book ai didi

mysql - SELECT 将检查超过 MAX_JOIN_SIZE 行

转载 作者:行者123 更新时间:2023-11-29 17:41:11 24 4
gpt4 key购买 nike

我们正在连接 3 个表,分别包含约 21000 行、约 2000 行和约 1600 行。

MAX_JOIN_SIZE 约为 8.000.000。每个表都包含一个名为providerID 的列。

查询如下:

SELECT
A.ID, B.ID, C.ID
FROM A
INNER JOIN B
ON A.ID = B.aID
INNER JOIN C
ON A.ID = C.aID
WHERE
A.providerID = 200 AND
B.providerID = 200 AND
C.providerID = 200

整个查询返回 3 行,每个 where 行返回 ~90、~60、~10 行。

设置 BIG_SQL_QUERY 还不够好,因为这个问题突然发生。

在我看来,查询优化器应该可以处理首先从 3 个表中进行选择然后加入的问题

最佳答案

SELECT  A.ID, B.ID, C.ID
FROM A
INNER JOIN B ON A.ID = B.aID
AND A.providerID = B.providerID
INNER JOIN C ON A.ID = C.aID
AND A.providerID = C.providerID
WHERE A.providerID = 200

添加

A:  INDEX(providerID, ID)   -- In this order
B: INDEX(providerID, aID) -- In either order
C: INDEX(providerID, aID) -- In either order

如果可能,请使用表和列的真实姓名;有时,意图有一些有用的线索,可以帮助处理性能(等)问题。如果它们不都是“200”,那么我的答案需要喷上火山灰。

或许通过使用这些索引可以避免“连接”限制。

看起来BC有很强的相关性;有理由有两个单独的表吗? (同样,真实的名字可能已经回答了这个问题。)

关于mysql - SELECT 将检查超过 MAX_JOIN_SIZE 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002533/

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