SQLite - INDEXED BY mệnh đề

Mệnh đề "INDEXED BY index-name" chỉ định rằng chỉ mục được đặt tên phải được sử dụng để tra cứu các giá trị trên bảng trước.

Nếu tên-chỉ mục không tồn tại hoặc không thể được sử dụng cho truy vấn, thì việc chuẩn bị câu lệnh SQLite không thành công.

Mệnh đề "NOT INDEXED" quy định rằng 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ỉ số ngụ ý được tạo bởi ràng buộc UNIQUE và PRIMARY KEY.

Tuy nhiên, KHÓA CHÍNH CỦA INTEGER vẫn có thể được sử dụng để tra cứu các mục nhập ngay cả khi "NOT INDEXED" được chỉ định.

Cú pháp

Sau đây là cú pháp cho mệnh đề INDEXED BY và nó có thể được sử dụng với câu lệnh DELETE, UPDATE hoặc SELECT.

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

Thí dụ

Xem xét bảng COMPANY Chúng tôi sẽ tạo một chỉ mục và sử dụng nó để thực hiện thao tác INDEXED BY.

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

Bây giờ 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;

Điều này sẽ tạo ra kết quả sau.

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