Tài liệu của Cassandra nêu rõ,
Không sử dụng một chỉ mục trong những tình huống này:
- Trên các cột có số lượng thẻ cao vì sau đó bạn truy vấn một khối lượng lớn các bản ghi cho một số lượng nhỏ kết quả. Xem các vấn đề khi sử dụng chỉ số cột cardinality cao bên dưới.
Nó tiếp tục
Nếu bạn tạo một chỉ mục trên cột có số lượng thẻ cao, có nhiều giá trị riêng biệt, một truy vấn giữa các trường sẽ phát sinh nhiều tìm kiếm cho rất ít kết quả. Trong bảng có một tỷ bài hát, việc tìm kiếm các bài hát của nhà văn (một giá trị thường là duy nhất cho mỗi bài hát) thay vì bởi nghệ sĩ của họ, có thể sẽ rất kém hiệu quả. Có lẽ sẽ hiệu quả hơn nếu duy trì thủ công bảng dưới dạng một chỉ mục thay vì sử dụng chỉ mục tích hợp Cassandra. Đối với các cột chứa dữ liệu duy nhất, đôi khi sử dụng chỉ mục để thuận tiện, miễn là khối lượng truy vấn đối với bảng có cột được lập chỉ mục là vừa phải và không tải liên tục.
Nhưng không bao giờ thực sự trả lời câu hỏi: tại sao nó không hiệu quả? Tôi không biết "duy trì thủ công bảng dưới dạng một chỉ mục" nghĩa là gì. Nhưng sau đó, nó phần nào mâu thuẫn với chính nó, "đôi khi nó rất hiệu quả khi sử dụng một chỉ mục để thuận tiện miễn là khối lượng truy vấn ở mức vừa phải"
Có phải đây chỉ là cố gắng bảo tôi sử dụng PK khi nào và ở đâu tôi có thể? Không hiệu quả là gì? Tôi hiểu rằng một truy vấn sẽ đánh vào một chỉ mục sẽ cần truy vấn mọi nút trong cụm, và sau đó mỗi nút sẽ thực hiện tra cứu trong chỉ mục cục bộ của nó và kết quả sẽ được tổng hợp. Điều này không nhất thiết phải tốn kém (mỗi lần tra cứu chỉ số nên khá rẻ) ngoại trừ việc chúng tôi trả tiền theo độ trễ mạng, vì chúng tôi phải chờ nút chậm nhất trong số rất nhiều. Tôi có thiếu thứ gì ở đây không?
Nhưng nếu tôi có một bộ sưu tập có một món đồ trị giá - trong một dịp hiếm hoi - cần phải được tra cứu bởi một thuộc tính khác nhưng gần như duy nhất thì đây là một cách sử dụng phù hợp, phải không?
VeryMọi người? IDK nếu sao chép có nghĩa là điều này có thể đạt 1/3 của cụm cho hệ số sao chép là 3 hay không?