Référence des fonctions de recherche
Cette documentation présente des comparaisons quantitatives entre les fonctions de recherche des données. Elle décrit le résultat de la comparaison entre les fonctions LOOKUP(), SEARCHUP() et SEARCHDOWN().
La principale différence fonctionnelle entre LOOKUP(), SEARCHUP() et SEARCHDOWN() tient à la possibilité de prendre en compte des expressions logiques complètes dans la fonction LOOKUP(). La fonction LOOKUP() permet par exemple de rechercher la première entité dont la valeur est inférieure à 3. Les fonctions SEARCHUP() ou SEARCHDOWN() ne permettent de rechercher que des correspondances exactes.
Outre l'aspect fonctionnel, LOOKUP(), SEARCHUP() et SEARCHDOWN() présentent également des différences en termes de performances. Une recherche LOOKUP() effectue un balayage séquentiel de l'ensemble de données spécifié et tente de trouver une correspondance avec la condition logique. En moyenne, l'exécution d'une recherche LOOKUP() nécessite un temps proportionnel à la quantité de données.
Les fonctions SEARCHUP() et SEARCHDOWN(), quant à elles, permettent d'obtenir une réponse plus rapidement grâce au tri des données d'entrée. Les fonctions SEARCHUP() et SEARCHDOWN() utilisent un index de recherche binaire des éléments contenus dans les séries de données. Le temps d'exécution résultant est proportionnel au logarithme de comptage. En d'autres termes, le doublage de la quantité d'éléments dans les séries de données ne provoque qu'une augmentation par paliers du temps d'exécution nécessaire à cette recherche.
Pour bénéficier de cet avantage en termes de temps de réponse, les fonctions SEARCHUP() et SEARCHDOWN() nécessitent le tri des données. En outre, les fonctions SEARCHUP() et SEARCHDOWN() permettent de rechercher des correspondances exactes. Si ces conditions sont acceptables dans la mappe, l'utilisation de la fonction SEARCHUP() ou SEARCHDOWN() permet d'améliorer de façon significative le temps d'exécution. Ces avantages sont particulièrement visibles avec les séries de données volumineuses.
Le tableau suivant présente les exemples de résultat.
| Fonctions de mappage | 16 Ko | 128 Ko | 1 Mo | 2 Mo |
|---|---|---|---|---|
| SEARCHUP() | 0,23 | 0.46 | 3,04 | 5,83 |
| LOOKUP() | 0,28 | 4,84 | 288,40 | 1220,27 |
Ce tableau contient le temps d'exécution des deux mappes recherchant la correspondance avec chaque donnée d'un fichier d'entrée à un autre. La différence entre les deux mappes tient dans la fonction qu'elles utilisent respectivement pour rechercher la correspondance de données. La première mappe localise rapidement les correspondances grâce à la fonction SEARCHUP(). La seconde mappe utilise la fonction LOOKUP().
Dans le cas de séries de données réduites, la différence entre les temps d'exécution n'est pas significative. En revanche, à mesure que le flux d'entrée augmente, le temps d'exécution de la mappe SEARCHUP augmente beaucoup plus lentement que celui de la mappe LOOKUP.
Chaque élément de données du fichier d'entrée fait l'objet d'une recherche. Il en résulte une augmentation du temps de réponse global à mesure que la taille des données et le temps de réponse augmentent. Dans le cas de la mappe LOOKUP, ceci entraîne une augmentation exponentielle du temps d'exécution de la mappe à mesure que la taille des données croît. Le doublement du flux d'entrée nécessite un temps d'exécution quatre fois supérieur pour cette mappe.