SQLite - Clause INDEXED BY

La clause "INDEXED BY index-name" spécifie que l'index nommé doit être utilisé pour rechercher des valeurs dans le tableau précédent.

Si le nom d'index n'existe pas ou ne peut pas être utilisé pour la requête, la préparation de l'instruction SQLite échoue.

La clause "NOT INDEXED" spécifie qu'aucun index ne doit être utilisé lors de l'accès au tableau précédent, y compris les indices implicites créés par les contraintes UNIQUE et PRIMARY KEY.

Cependant, INTEGER PRIMARY KEY peut toujours être utilisé pour rechercher des entrées même lorsque "NOT INDEXED" est spécifié.

Syntaxe

Voici la syntaxe de la clause INDEXED BY et elle peut être utilisée avec l'instruction DELETE, UPDATE ou SELECT.

SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);

Exemple

Considérons la table COMPANY Nous allons créer un index et l'utiliser pour effectuer l'opération INDEXED BY.

sqlite> CREATE INDEX salary_index ON COMPANY(salary);
sqlite>

En sélectionnant maintenant les données de la table COMPANY, vous pouvez utiliser la clause INDEXED BY comme suit -

sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;

Cela produira le résultat suivant.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
7           James       24          Houston     10000.0
2           Allen       25          Texas       15000.0
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0