Chúng tôi có bảng sau (bằng SQLite trên Android) có cấu trúc cây (mô hình Nested Set) của các từ và tần số của chúng:
lexikon
-------
_id integer PRIMARY KEY
word text
frequency integer
lset integer UNIQUE KEY
rset integer UNIQUE KEY
Và truy vấn:
SELECT word
FROM lexikon
WHERE lset BETWEEN @Low AND @High
ORDER BY frequency DESC
LIMIT @N
Tôi cho rằng một chỉ số bao phủ trên (lset, frequency, word)
sẽ hữu ích nhưng tôi cảm thấy nó có thể hoạt động không tốt nếu có quá nhiều lset
giá trị trong (@High, @Low)
phạm vi.
(frequency DESC)
Đôi khi một chỉ mục đơn giản cũng có thể đủ, khi một tìm kiếm sử dụng chỉ mục đó mang lại sớm các @N
hàng khớp với điều kiện phạm vi.
Nhưng dường như hiệu suất phụ thuộc rất nhiều vào các giá trị tham số.
Có cách nào để làm cho nó hoạt động nhanh, bất kể phạm vi (@Low, @High)
rộng hay hẹp và bất kể các từ tần số cao nhất có may mắn trong phạm vi được chọn (hẹp) không?
frequency
cột không?