Sim. Reescreva a consulta LINQ. A maioria das consultas LINQ to Entities pode ser escrita de muitas maneiras diferentes e será traduzida para SQL de maneira diferente. Como você não mostra o LINQ nem o SQL nem o plano de consulta, é tudo o que posso dizer.
Você é inteligente, porém, para tentar executar o SQL diretamente. A compilação da consulta também pode levar tempo, mas você descartou isso ao determinar que o SQL é responsável por todo o tempo medido.
Experimentar:
var query = from pe in genesisContext.People_Event_Link
where pe.P_ID == key
from ev in pe.Event // presuming one to many
select ev;
ou se pe.Event for um para um:
var query = from pe in genesisContext.People_Event_Link
where pe.P_ID == key
select pe.Event;
return query;