Um detalhe sobre o seu exemplo do EXISTS
é que assim ficaria melhor.
SELECT M.CAMPO1, M.CAMPO2, M.CAMPO3, ..., M.CAMPON
FROM MINHA_TABELA M
WHERE EXISTS (SELECT 1
FROM TABELA_LOG L
WHERE L.ID_MINHA_TABELA = M.ID
AND YEAR(L.DATA) = 2017)
- Sua subconsulta só retornaria 1 campo
- Como seu campo
L.DATA
indica ser do tipoDATE
é bom usar as funções de data que retornam números, que é menos custoso de comparar do que os textos - Não esquecer de limitar os campos da consulta