Então se colocar os filtros direto no INNER JOIN ele já reduz os itens consultados no começo da query.
Em uma consulta bem comum que liga os itens da nota com o cabeçalho ficaria algo assim, para pegar as notas da loja 2 dos últimos 5 dias ficaria assim:
Com o WHERE:
SELECT numero, codigo_loja, razao_social, ean, valor_unitario, quantidade
FROM venda_cabecalho c
INNER JOIN venda_itens i on (i.numero = c.numero and i.loja = c.loja)
WHERE c.codigo_loja = 2 and c.data > (current_date - 5)
Direto no INNER JOIN:
SELECT numero, codigo_loja, razao_social, ean, valor_unitario, quantidade
FROM venda_cabecalho c
INNER JOIN venda_itens i on (c.codigo_loja = 2 and c.data > (current_date - 5) and i.numero = c.numero and i.loja = c.loja)