Otimize o SQL que usa entre a cláusula
Considere as 2 tabelas a seguir:
Table A:
id
event_time
Table B
id
start_time
end_time
Cada registro na tabela A é mapeado para exatamente 1 registro na tabela B. Isso significa que a tabela B não possui períodos sobrepostos. Muitos registros da tabela A podem ser mapeados para o mesmo registro na tabela B.
Preciso de uma consulta que retorne todos os pares A.id, B.id. Algo como
SELECT A.id, B.id
FROM A, B
WHERE A.event_time BETWEEN B.start_time AND B.end_time
Estou usando o MySQL e não consigo otimizar esta consulta. Com ~ 980 registros na tabela A e 130.000 na tabela B, isso leva uma eternidade. Entendo que isso precisa realizar 980 consultas, mas levar mais de 15 minutos em uma máquina robusta é estranho. Alguma sugestão
P.S. Não consigo alterar o esquema do banco de dados, mas posso adicionar índices. No entanto, um índice (com 1 ou 2 campos) nos campos de hora não ajuda.