English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Indici di Frazione di SQLite

La clausola “ INDEXED BY index-name” specifica che deve essere utilizzato l'indice denominato per trovare valori nella tabella superiore.

Se l'index-name non esiste o non può essere utilizzato per la query, la preparazione della statement SQLite fallisce.

La clausola “ NOT INDEXED” specifica che non deve essere utilizzato l'indice per accedere alla tabella superiore, inclusi gli indici impliciti creati dalle constraint UNIQUE e PRIMARY KEY.

Tuttavia, anche se è stato specificato “ NOT INDEXED”, è possibile trovare le voci utilizzando INTEGER PRIMARY KEY.

Sintassi

Ecco la sintassi della clausola INDEXED BY, che può essere utilizzata insieme a statement DELETE, UPDATE o SELECT.

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

Esempio online

Creeremo un indice nella tabella COMPANY e lo utilizzeremo per eseguire l'operazione INDEXED BY.

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

Ora è possibile selezionare i dati dalla tabella COMPANY utilizzando la clausola INDEXED BY, come segue:

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

Questo genererà i seguenti risultati.

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
6           David        27          Texas       85000.0