SQLite - cláusula INDEXED BY
A cláusula "INDEXED BY index-name" especifica que o índice nomeado deve ser usado para pesquisar valores na tabela anterior.
Se index-name não existir ou não puder ser usado para a consulta, a preparação da instrução SQLite falhará.
A cláusula "NOT INDEXED" especifica que nenhum índice deve ser usado ao acessar a tabela anterior, incluindo índices implícitos criados pelas restrições UNIQUE e PRIMARY KEY.
No entanto, a INTEGER PRIMARY KEY ainda pode ser usada para pesquisar entradas, mesmo quando "NOT INDEXED" é especificado.
Sintaxe
A seguir está a sintaxe para a cláusula INDEXED BY e ela pode ser usada com a instrução DELETE, UPDATE ou SELECT.
SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);
Exemplo
Considere a tabela COMPANY Vamos criar um índice e usá-lo para realizar a operação INDEXED BY.
sqlite> CREATE INDEX salary_index ON COMPANY(salary);
sqlite>
Agora, selecionando os dados da tabela COMPANY, você pode usar a cláusula INDEXED BY da seguinte forma -
sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;
Isso produzirá o seguinte resultado.
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