OrientDB - Chỉ mục
Index là một con trỏ trỏ đến một vị trí của dữ liệu trong cơ sở dữ liệu. Indexinglà một khái niệm được sử dụng để nhanh chóng xác định vị trí dữ liệu mà không cần phải tìm kiếm mọi bản ghi trong cơ sở dữ liệu. OrientDB hỗ trợ bốn thuật toán chỉ mục và một số loại trong mỗi thuật toán.
Bốn loại chỉ mục là -
Chỉ số SB-Tree
Nó cung cấp một kết hợp tốt các tính năng có sẵn từ các loại chỉ mục khác. Tốt hơn nên sử dụng cái này cho tiện ích chung. Nó bền, có tính giao dịch và hỗ trợ các truy vấn phạm vi. Đây là loại chỉ mục mặc định. Các loại plugin khác nhau hỗ trợ thuật toán này là:
UNIQUE- Các chỉ mục này không cho phép các khóa trùng lặp. Đối với các chỉ mục tổng hợp, điều này đề cập đến tính duy nhất của các khóa tổng hợp.
NOTUNIQUE - Các chỉ mục này cho phép các khóa trùng lặp.
FULLTEXT- Các chỉ mục này dựa trên bất kỳ từ nào của văn bản. Bạn có thể sử dụng chúng trong các truy vấn thông quaCONTAINSTEXT nhà điều hành.
DICTIONARY - Các chỉ mục này tương tự như các chỉ mục sử dụng UNIQUE, nhưng trong trường hợp các khóa trùng lặp, chúng thay thế bản ghi hiện có bằng bản ghi mới.
Chỉ số băm
Nó hoạt động nhanh hơn và sử dụng đĩa rất nhẹ. Nó bền, mang tính giao dịch, nhưng không hỗ trợ các truy vấn phạm vi. Nó hoạt động giống như HASHMAP, giúp tra cứu đúng giờ nhanh hơn và tiêu tốn ít tài nguyên hơn các loại chỉ mục khác. Các loại plugin khác nhau hỗ trợ thuật toán này là:
UNIQUE_HASH_INDEX- Các chỉ mục này không cho phép các khóa trùng lặp. Đối với các chỉ mục tổng hợp, điều này đề cập đến tính duy nhất của các khóa tổng hợp.
NOTUNIQUE_HASH_INDEX - Các chỉ mục này cho phép các khóa trùng lặp.
FULLTEXT_HASH_INDEX- Các chỉ mục này dựa trên bất kỳ từ nào của văn bản. Bạn có thể sử dụng chúng trong các truy vấn thông qua toán tử CONTAINSTEXT.
DICTIONARY_HASH_INDEX - Các chỉ mục này tương tự như các chỉ mục sử dụng UNIQUE_HASH_INDEX, nhưng trong trường hợp các khóa trùng lặp, chúng thay thế bản ghi hiện có bằng bản ghi mới.
Chỉ mục văn bản đầy đủ của Lucene
Nó cung cấp các chỉ mục toàn văn tốt, nhưng không thể được sử dụng để lập chỉ mục các loại khác. Nó bền, có tính giao dịch và hỗ trợ các truy vấn phạm vi.
Chỉ số không gian Lucene
Nó cung cấp các chỉ mục không gian tốt, nhưng không thể được sử dụng để lập chỉ mục các loại khác. Nó bền, có tính giao dịch và hỗ trợ các truy vấn phạm vi.
Tạo chỉ mục
Tạo chỉ mục là lệnh tạo chỉ mục trên một lược đồ cụ thể.
Câu lệnh sau là cú pháp cơ bản để tạo một chỉ mục.
CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>]
[METADATA {<metadata>}]
Sau đây là chi tiết về các tùy chọn trong cú pháp trên.
<name>- Xác định tên logic cho chỉ mục. Bạn cũng có thể sử dụng ký hiệu <class.property> để tạo chỉ mục tự động liên kết với một thuộc tính lược đồ. <class> sử dụng lớp của lược đồ và <property> sử dụng thuộc tính được tạo trong lớp.
<class-name>- Cung cấp tên của lớp mà bạn đang tạo chỉ mục tự động để lập chỉ mục. Lớp này phải tồn tại trong cơ sở dữ liệu.
<prop-names>- Cung cấp danh sách các thuộc tính mà bạn muốn chỉ mục tự động lập chỉ mục. Các thuộc tính này phải đã tồn tại trong lược đồ.
<type> - Cung cấp thuật toán và loại chỉ mục mà bạn muốn tạo.
<key-type> - Cung cấp loại khóa tùy chọn với các chỉ mục tự động.
<metadata> - Cung cấp đại diện JSON.
Thí dụ
Hãy thử truy vấn sau để tạo chỉ mục tự động liên kết với thuộc tính 'ID' của người dùng sales_user.
orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE
Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.
Creating index...
Index created successfully with 4 entries in 0.021000 sec(s)
Chỉ mục truy vấn
Bạn có thể sử dụng truy vấn chọn để lấy các bản ghi trong chỉ mục.
Hãy thử truy vấn sau để lấy các khóa của chỉ mục có tên 'indexforId'.
SELECT FROM INDEX:indexforId
Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.
----+------+----+-----
# |@CLASS|key |rid
----+------+----+-----
0 |null |1 |#11:7
1 |null |2 |#11:6
2 |null |3 |#11:5
3 |null |4 |#11:8
----+------+----+-----
Thả chỉ mục
Nếu bạn muốn giảm một chỉ mục cụ thể, bạn có thể sử dụng lệnh này. Thao tác này không xóa các bản ghi được liên kết.
Câu lệnh sau là cú pháp cơ bản để loại bỏ một chỉ mục.
DROP INDEX <name>
Ở đâu <name> cung cấp tên của chỉ mục bạn muốn giảm xuống.
Hãy thử truy vấn sau để thả chỉ mục có tên 'ID' của người dùng sales_user.
DROP INDEX sales_users.Id
Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.
Index dropped successfully