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