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
и add
A: INDEX(providerID, ID) -- In this order
B: INDEX(providerID, aID) -- In either order
C: INDEX(providerID, aID) -- In either order
Если возможно, используйте реальные имена для таблиц и столбцов;иногда есть полезные подсказки intent , которые могут помочь в решении проблем производительности (и т. д.).Если бы они не были все "200", то мой ответ должен иметь извергнутый на него вулканический пепел.
Возможно, предела 'соединения' можно избежать, имея эти индексы.
Кажется, что B
и C
тесно связаны;есть ли причина иметь две отдельные таблицы?(Опять же, настоящие имена могли бы ответить на этот вопрос.)