Chapter 3 Construction de diagrammes physiques


Création d'un index basé sur une fonction

Dans certains SGBD, vous pouvez créer des index sur les fonctions et expressions qui impliquent une ou plusieurs colonnes dans la table indexée. Un index basé sur une fonction précalcule la valeur de la fonction ou de l'expression et stocke le résultat dans un index. La fonction ou l'expression remplacera la colonne d'index dans la définition de l'index.

Les index basés sur une fonction constituent un mécanisme très efficace pour évaluer les instructions qui contiennent des fonctions dans leur clause WHERE.

Reverse engineering d'un index basé sur une fonction

Une colonne d'index dotée d'une expression a un type de données LONG qui ne peut pas être concaténé dans une instruction de chaîne lors du reverse engineering. La seule façon de contourner cette limitation et de concaténer cette valeur est d'utiliser des variables dans la requête exécutée afin d'extraire les informations adéquates.

Dans les SGBD Oracle 8i et Oracle 8i2, la requête SqlListQuery définie dans la catégorie Index contient la variable suivante, utilisée pour récupérer l'expression d'index dans une colonne dotée du type de données LONG.

'%SqlExpression.Xpr'||i.table_name||i.index_name||c.column_position||'%'

Pour plus d'informations sur l'utilisation des variables dans les requêtes de reverse engineering, reportez-vous à la section "Mécanisme d'extension pour les requêtes de reverse engineering ODBC", dans le chapitre "Guide de référence du SGBD" dans la Documentation utilisateur avancée .

Exemple

Les index basés sur une fonction définis sur UPPER(nom_colonne) ou LOWER(nom_colonne) peuvent faciliter les recherches qui ignorent la casse des caractères.

Si vous souhaitez définir un index qui convertira tous les noms en majuscules dans la table EMPLOYE afin de faciliter la recherche, vous pouvez définir l'index suivant (syntaxe pour Oracle 8i) :

CREATE INDEX indx_nom_maj ON SALARIE (UPPER(SALNOM))

Le SGBD peut alors l'utiliser pour le traitement de requêtes telles que la suivante :

SELECT * FROM SALARIE WHERE UPPER(SALNOM)="MARTIN"

Steps Pour créer un index basé sur une fonction :

  1. Double-cliquez sur le symbole d'une table dans le diagramme pour afficher la feuille de propriétés de cette table.
  2. Cliquez sur l'onglet Index.
  3. Cliquez sur l'outil Ajouter une ligne.

    Une flèche s'affiche au début de la ligne.
  4. Saisissez un nom et un code d'index.
  5. Cliquez sur Appliquer.
  6. Cliquez sur l'outil Propriétés.

    ou

    Double-cliquez sur la flèche au début de la ligne.

    La feuille de propriétés de l'index s'affiche à l'onglet Général.
  7. Cliquez sur l'onglet Colonnes pour afficher l'onglet Colonnes.
  8. Cliquez sur l'outil Ajouter une ligne.

    Une flèche s'affiche au début de la ligne.
  9. Cliquez dans la colonne Expression et cliquez sur le bouton Points de suspension.

    La boîte de dialogue Editeur SQL s'affiche.
  10. Saisissez une expression dans l'éditeur.
  11. Cliquez sur OK.

    L'expression d'index s'affiche dans les colonnes Nom, Code et Expression dans la liste des colonnes.
  12. Cliquez sur OK dans le boîtes de dialogue successives.

 


Copyright (C) 2005. Sybase Inc. All rights reserved.