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