Я столкнулся с этой очень странной ситуацией и подумал, что брошу это в толпу, чтобы узнать ПОЧЕМУ.
У меня есть запрос, который присоединяется к таблице на связанном сервере:
select a.*, b.phone
from table_a a,
join remote.table_b b on b.id = a.id
(lots of data on A, but very few on B)
этот запрос говорил вечно (даже не узнал фактического времени выполнения), и именно тогда я заметил, что B
не имеет индекса, поэтому я добавил его, но это не решило проблему. Наконец, в отчаянии я попытался:
select a.*, b.phone
from table_a a,
join (select id, phone from remote.B) as b on b.id = a.id
Эта версия запроса, по моему мнению, как минимум, должна иметь те же результаты, но вот, он отвечает немедленно!
Есть идеи, почему один зависает, а другой быстро обрабатывается? И да, я ждал, чтобы убедиться, что индекс был построен, прежде чем запускать оба.