* Última atualização
Em 4D 2004, uma pesquisa por fórmula é executada do lado do cliente. Isto significa que cada registro deve passar sobre a rede para aplicar uma fórmula e determinar se será parte da seleção.
Quando a lógica da requisição lhe permite, 4D v11 SQL realizará perguntas diretamente no servidor para evitar cargas estranhas na rede. Só se devolve a seleção do lado do cliente, como em uma busca clássica.
Voltemos à fórmula para medir a distância utilizada no teste QUERY BY FORMULA (standalone).
QUERY BY FORMULA(Square root((((Abs($latitudeRef-[customer]latitude)
/Radian )*6378)^2)+(((Abs($longitudeRef-[customer]longitude)
/Radian )*6378)^2))<10)
Sob 4D 2004, a pesquisa é executada em 15.3 minutos, o que é um tempo inviável (e é por isso que si você assistiu a alguma formação 4D, vai se lembrar que os instrutores sempre recomendam não utilizar QUERY BY FORMULA em uma aplicação cliente/servidor!)
Em 4D v11 SQL, esta busca é executada em 5.5 segundos, tornando-se muito mais viável na maioria dos casos.
Esta é uma melhora de 165 vezes, sujeita a variáveis tais como o número de registros na tabela, como também a velocidade da rede, a latência, etc.
Esta otimização é possível quando uma busca não utiliza métodos dentro da fórmula. Esta é a razão pela qual a petição não foi encapsulada na função “Distance” como no teste independente.
Por outro lado, o uso de campos ou variáveis não traz nenhum problema. 4D Client envia automaticamente ao 4D Server o valor dos elementos utilizados em uma fórmula de maneira que possam ser executados corretamente.