When the solution matters*

4D Internacional


| 4D v11 SQL | 4D 2004 (versão anterior) | Download |

4D v11 SQL

Informação geral Produtos 4D Manutenção 4D Características Começando com 4D Recursos

Buscar por fórmula - Independente

 

Buscar por fórmula - Independente
Em 4D 2004, é calculada uma fórmula para cada registro sequencialmente. 

4D v11 SQL analisa as fórmulas de antemão para otimizar as buscas. O analisador sintático pode identificar partes da fórmula que possam ser otimizadas para reduzir as partes seqüenciais da consulta.

Nosso caso de teste envolve a georeferenciação (localização por grau de latitude e longitude) de clientes. Gostaríamos de buscar os clientes que estão em um raio de 10 km de um ponto em particular. Digamos que temos a função., “Distance,” que devolve o número de km entre dois pontos.

Obs: Estamos utilizando um meio comum para medir a distância na superfície da terra.

Square root(((Abs($1-$3)/Radian)*6378)^2)+(((Abs($2-$4)/Radian)*6378)^2))

Mas pode ser refinada com uma medida ortodrômica, se você for exigente.

 

QUERY BY FORMULA (distance($latitude;$longitude;[customer]latitude;
         [customer]longitude)<10)

 

A busca por uma fórmula em 10 000 clientes produz 7 registros em 556 milisegundos em 4D v11 SQL… o qual é significativamente melhor que na versão 4D 2004, já que a busca é seqüencial por necessidade e termina varrendo o arquivo inteiro.

Mas se pré-filtramos nossa busca limitando-a a cidade correspondente a nosso ponto de partida, obtemos resultados muito diferentes:

QUERY BY FORMULA([customer];([customer]city=$city) & (distance($latitude;
        $longitude;[customer]latitude;[customer]longitude)<10)) 

 

Na prática, 4D v11 SQL discerne que pode reduzir o perímetro da busca ao ter vantagem com o campo indexado [customer]City. Neste caso, nos restringe a 42 registros.

O resto da expressão é então avaliada nos registros dentro dessa seleção e esta busca também produz 7 registro, mas em 5 milisegundos – ou seja, 111 vezes mais rápido!

A diferença aqui com 4D 2004 é gigantesca: Diferente de 4D v11 SQL, 4D 2004 não poderia ter criado uma lista pré-filtrada mais curta para restringir sua busca seqüencial à cidade desejada. Haveria buscado dados em toda a lista, como na primeira busca.

Os benefícios de rendimento de QUERY BY FORMULA dependem do, obviamente,  tipo de requisição, mas os desenvolvedores podem contar com o analisador de buscas de 4D v11 SQL para buscar automaticamente todas as otimizações possíveis.

Internacional | Empresa | Contatar 4D | Mapa do Site | © 4D, S.A. 2008 | Tamanho da fonte: [A] [A] [A] *Quando a solução é o que importa