Existem várias dicas para melhorar a performance dos códigos desenvolvidos em X++, abaixo algumas que colhi da internet e outras da minha experiência como desenvolvedor.

1. Use aggregate functions

Não deixe de usar as funções sum, avg, minof, maxof e count se elas forem aplicaveis. Esta pequena mudança utiliza algoritimos da base de dados ao invés de ser calculado pelo X++, a performance é muito melhor.

2. Cache display method data

Sempre coloque os seus métodos display nas tabelas e use o método formDataSource.cacheAddMethod para fazer o cache do método no cliente.

3. Use field list

Field list pode usar implicitamente a condição firstonly e reduzir a quantidade de dados tranferidas do servidor para o cliente.

Ex.:
return (select custTable where
custTable.Account== ‘0001’).Name;

4. Mantenha o número de chamadas entre diferentes layers o menor possível, guarde os valores em variáveis locais ou use containers.

5. Use index hint com cuidado.

Se a base de dados for MSSQL 2000 ou maior, não coloque o index hint na instrução SQL, apenas tenha em mente que a otimização da base de dados é esperta o suficiente.

6. Use joins ao invés de multiplos selects. Joins inteligentes podem melhorar a performance significativamente.

7. Use preferencialmente as ações recordset-based

O operador Recordset-based como o Update_RecordSet, Insert_RecordSet, e Delete_From podem resultar em um número menor de chamadas à database.

8. Use instruções select no lugar de Query
Instruções select tem uma performance melhor na maioria das situações.

[]s
Pichler