Mệnh đề INDEXED BY index-name (index-name là tên chỉ mục) xác định rằng chỉ mục với tên đã cho phải được sử dụng để tìm kiếm các giá trị trên bảng ở trước.
Nếu index-name không tồn tại hoặc không thể được sử dụng cho truy vấn, thì lệnh SQLite này thất bại.
Mệnh đề NOT INDEXED xác định rằng sẽ không có chỉ mục nào được sử dụng khi truy cập bảng trước đó, bao gồm các chỉ mục ngầm định đã được tạo bởi ràng buộc UNIQUE và PRIMARY KEY.
Tuy nhiên, INTERGER PRIMARY KEY có thể vẫn được sử dụng để tìm các entry ngay cả khi NOT INDEXED được xác định.
Sau đây là cú pháp cơ bản của mệnh đề INDEXED BY và nó có thể được sử dụng với lệnh DELETE, UPDATE, và SELECT.
SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);
Ví dụ
Với bảng COMPANY này, chúng ta sẽ tạo một chỉ mục và sử dụng nó để thực hiện hoạt động INDEXED BY.
sqlite> CREATE INDEX salary_index ON COMPANY(salary);
sqlite>
Bây giờ, lựa chọn dữ liệu từ bảng COMPANY, bạn có thể sử dụng mệnh đề INDEXED BY như sau:
sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;
Ví dụ trên sẽ cho kết quả:
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