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