Mệnh đề INDEXED BY trong SQLite

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

Bình luận