SQLite - Cláusula INDEXED BY

La cláusula "INDEXED BY index-name" especifica que el índice nombrado debe usarse para buscar valores en la tabla anterior.

Si index-name no existe o no se puede usar para la consulta, la preparación de la declaración SQLite falla.

La cláusula "NOT INDEXED" especifica que no se utilizará ningún índice al acceder a la tabla anterior, incluidos los índices implícitos creados por las restricciones UNIQUE y PRIMARY KEY.

Sin embargo, la TECLA PRIMARIA INTEGER todavía se puede utilizar para buscar entradas incluso cuando se especifica "NO INDEXADO".

Sintaxis

A continuación se muestra la sintaxis de la cláusula INDEXED BY y se puede utilizar con la instrucción DELETE, UPDATE o SELECT.

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

Ejemplo

Considere la tabla EMPRESA Crearemos un índice y lo usaremos para realizar la operación INDEXADO POR.

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

Ahora, seleccionando los datos de la tabla EMPRESA, puede usar la cláusula INDEXED BY de la siguiente manera:

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

Esto producirá el siguiente 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