Предложение «INDEXED BY index-name» указывает, что именованный индекс должен использоваться для поиска значений в предыдущей таблице.
Если index-name не существует или не может быть использовано для запроса, подготовка оператора SQLite завершится неудачно.
Предложение «НЕ УКАЗАНО» указывает, что при доступе к предыдущей таблице не должен использоваться индекс, включая подразумеваемые индексы, созданные ограничениями UNIQUE и PRIMARY KEY.
Тем не менее, INTEGER PRIMARY KEY можно по-прежнему использовать для поиска записей, даже если указано «NOT INDEXED».
Синтаксис
Ниже приведен синтаксис предложения INDEXED BY, и его можно использовать с инструкциями DELETE, UPDATE или SELECT.
SELECT|DELETE|UPDATE column1, column2... INDEXED BY (index_name) table_name WHERE (CONDITION);
пример
Рассмотрим таблицу COMPANY. Мы создадим индекс и используем его для выполнения операции INDEXED BY.
sqlite> CREATE INDEX salary_index ON COMPANY(salary); sqlite>
Теперь, выбирая данные из таблицы COMPANY, вы можете использовать предложение INDEXED BY следующим образом:
sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;
Это даст следующий результат.