Quando o código abaixo é executado, ele fica pensando sem parar e acaba travando o fastreport, por quê?
SELECT TREQDEVMAT.COD_PRODUTO,
TPRODUTO.DES_PRODUTO,
TPRODUTO.COD_SUBFAMILIA,
TPRODUTOIDIOMA.DES_PRODUTO AS DES_PRODUTO_IDIOMA,
TREQDEVMAT.NUM_CHAVEOP,
(TREQDEVMAT.QTD_REQUISITADA / TORDEMPROD.QTD_PRODUZIR) AS QTD_POREQUIP,
TPRODUTO.FLG_ASSISTTEC,
TPRODUTO.VAL_ULTCUSTOMOV,
TPRODUTO.DAT_ULTCOMPRA
FROM TREQDEVMAT
LEFT JOIN TPRODUTO ON TPRODUTO.COD_PRODUTO = TREQDEVMAT.COD_PRODUTO
LEFT JOIN TORDEMPROD ON TORDEMPROD.NUM_CHAVE = TREQDEVMAT.NUM_CHAVEOP
LEFT JOIN TPRODUTOIDIOMA ON TPRODUTOIDIOMA.COD_PRODUTO = TREQDEVMAT.COD_PRODUTO
WHERE TREQDEVMAT.NUM_CHAVEOP IN (
SELECT tordemprod.NUM_CHAVE
FROM tmrp
LEFT JOIN tordemprod ON tordemprod.NUM_CHMRP = tmrp.NUM_CHAVE
WHERE TRIM(NUM_MRP) = '1354'
)
AND TPRODUTO.FLG_ASSISTTEC = 1
AND TPRODUTOIDIOMA.COD_IDIOMA = 1
AND TREQDEVMAT.COD_EMPRESA = 1
AND (TPRODUTO.COD_SUBFAMILIA NOT LIKE 'CE-UM' OR TPRODUTO.COD_SUBFAMILIA = 'CM-FP')
ORDER BY TREQDEVMAT.COD_PRODUTO ASC
Sua subconsulta inclui condições que não podem usar índices. Isso torna o loop aninhado usado para esta consulta extremamente ineficaz. Como o resultado o tempo de execução é muito grande.
Sua consulta também contém erro lógico: condição na subconsulta duplica condição na junção, o que torna a situação ainda pior.
Crash of Fast Report não está relacionado a tudo isso e provavelmente é resultado de um grande número de registros retornados pela consulta.