English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Предложение "INDEXED BY index-name" указывает, что для поиска значений в таблице необходимо использовать именованный индекс.
Если имя индекса не существует или не может быть использовано для запроса, подготовка SQLite-запроса失败.
Предложение "NOT INDEXED" указывает, что при доступе к таблице не используется индекс, включая имплицитные индексы, созданные ограничениями UNIQUE и PRIMARY KEY.
Но даже если указано "NOT INDEXED", можно использовать INTEGER PRIMARY KEY для поиска записей.
Вот грамматика предложения INDEXED BY, которое можно использовать вместе с предложениями DELETE, UPDATE или SELECT.
SELECT|DELETE|UPDATE column1, column2...INDEXED BY (index_name)table_nameWHERE (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;
Это приведет к следующим результатам.
ID NAME AGE АДРЕС ЗАРПЛАТА ---------- ---------- ---------- ---------- ---------- 7 James 24 Хьюстон 10000.0 2 Allen 25 Техас 15000.0 1 Paul 32 Калифорния 20000.0 3 Teddy 23 Норвегия 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0