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