FirebirdSQL logo
 TABLEVIEW 

Qui peut créer un index ?

Exécuter l’opérateur CREATE INDEX peut :

  • Administrateurs

  • Le propriétaire de la table pour laquelle l’index est créé ;

  • Utilisateurs avec le privilège ALTER ANY TABLE.

Exemples

Example 1. Création d’un index
CREATE INDEX IDX_UPDATER ON SALARY_HISTORY (UPDATER_ID);
Example 2. Création d’un index avec des clés triées par ordre décroissant
CREATE DESCENDING INDEX IDX_CHANGE
ON SALARY_HISTORY (CHANGE_DATE);
Example 3. Création d’un index multi-segment
CREATE INDEX IDX_SALESTAT ON SALES (ORDER_STATUS, PAID);
Example 4. Création d’un index qui n’autorise pas les valeurs dupliquées
CREATE UNIQUE INDEX UNQ_COUNTRY_NAME ON COUNTRY (NAME);
Example 5. Création d’un indice calculable
CREATE INDEX IDX_NAME_UPPER ON PERSONS
COMPUTED BY (UPPER (NAME));

Un tel index peut être utilisé pour des recherches sans distinction de casse.

SELECT *
FROM PERSONS
WHERE UPPER(NAME) STARTING WITH UPPER('Iv');
CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;

Si la clause WHERE de la sélection est exactement la même expression que celle spécifiée dans l’index, l’index sera utilisé, sinon non.

SELECT * FROM T1 WHERE COL < 100;

-- PLAN (T1 INDEX (IT1_COL))

L’exemple suivant crée un index qui n’inclura pas les valeurs NULL.

CREATE INDEX IT1_COL2 ON T1 (COL) WHERE COL IS NOT NULL;

Cet index peut être utilisé par presque tous les prédicats de recherche, à l’exception de IS NULL et IS NOT DISTINCT FROM, puisque les autres expressions ignorent NULL.

SELECT * FROM T1 WHERE COL > 100;

-- PLAN (T1 INDEX IT1_COL2)

Un index partiel peut être créé sur plusieurs valeurs de colonnes en les énumérant dans IN ou en combinant plusieurs expressions avec l’opérateur OR.

CREATE INDEX IT1_COL3 ON T1 (COL) WHERE COL = 1 OR COL = 2;
SELECT * FROM T1 WHERE COL = 2;

-- PLAN (T1 INDEX IT1_COL3)
Voir aussi :

ALTER INDEX, DROP INDEX.