Meilleures pratiques pour les performances en matière de recherche de données

Il existe de nombreuses manières différentes de développer des mappes HCL Link pour effectuer des recherches de données. Ces différentes options permettent d'atteindre un équilibre différent en termes de fonctionnalités et de performances.

Les fonctions dont dispose le concepteur de mappes pour effectuer des recherches de données sont les suivantes :

  • EXTRACT()
  • LOOKUP()
  • SEARCHUP() ou SEARCHDOWN()
  • CHOOSE() - voir POSITIONAL INDEXING dans le tableau ci-dessous

Le tableau suivant énumère les fonctions dont dispose le concepteur de mappes pour effectuer des recherches de données.

Fonction Utilisation Avantage Inconvénient
EXTRACT()

Lorsque les résultats recherchés sont des objets multiples. L'une des plus puissantes méthodes de recherche dans un fichier de données. Cette méthode n'est pas la plus efficace pour localiser des objets uniques.
LOOKUP() Lorsque le résultat recherché est un objet unique.

Effectue un balayage du fichier de données objet par objet en recherchant un objet répondant aux critères spécifiés.

Fonction plus efficace que la fonction Extract(). Le temps moyen nécessaire à l'exécution des recherches dépend proportionnellement du nombre d'objets contenus dans le fichier de données.
SEARCHUP() ou SEARCHDOWN() Lorsque l'ensemble d'entités recherché est trié. Performances améliorées. Exploite le tri du fichier de données en parcourant celui-ci sous forme d'arborescence binaire.

Le temps de recherche est proportionnel à log2(N), où N est le nombre d'éléments de données.

Incompatible avec les fichiers de données non triés. Plus le fichier de données est réduit, moins les résultats sont performants.
INDEXATION POSITIONNELLE En association avec CHOOSE() et INDEX(), permet de localiser les objets contenus dans un fichier de données d'après leur position. Exécute des requêtes CHOOSE() répétées et conserve en cache les informations positionnelles du fichier de données indexé.

Tant que les appels itératifs CHOOSE() font référence à un même type, cette mémoire cache continue d'être utilisée et accélère l'indexation.

Lors d'envois d'appels itératifs CHOOSE() ne faisant pas référence à un même type, la mémoire cache n'est pas utilisée et l'indexation est moins rapide.