我们将连接3个表,分别为~21000行、~2000行和~1600行。
最大连接大小约为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行,每行返回~90、~60、~10行。
由于这个问题突然发生,设置大的sql查询不够好。
在我看来,查询优化器应该能够处理问题,首先从3个表中进行选择,然后连接
2条答案
按热度按时间x759pob21#
并添加
如果可能,请使用表和列的实名;有时有一些有用的意图线索可以帮助处理性能(etc)问题。如果它们不是都是“200”,那么我的答案需要火山灰喷到上面。
可能通过使用这些索引可以避免“join”限制。
看来
B
以及C
密切相关;有没有理由要两张分开的table(同样,实际姓名可能已经回答了这个问题。)xtupzzrd2#
可以将筛选器添加到联接条件
现在,如果providerid是获得的连接条件: