Tôi có một DB với một số trườngSQLite: Nên LIKE 'searchstr%' sử dụng chỉ mục?
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
..và ~ 150k hàng.
Vì đây là từ điển, tôi đang tìm kiếm một từ có mặt nạ 'search_string%'
bằng LIKE. Nó được sử dụng để làm việc tốt, lấy 15ms để tìm hàng phù hợp. Bảng có chỉ mục cho một trường 'word'
. Gần đây tôi đã sửa đổi bảng (một số trường của bảng đó nằm ngoài phạm vi) và một cái gì đó đã xảy ra - nó lấy 400ms để thực thi truy vấn, vì vậy tôi hiểu rằng vì nó không sử dụng chỉ mục ngay bây giờ. Truy vấn đơn giản với = thay vì hiển thị kết quả 10ms. Có ai đó có ý tưởng gì đang xảy ra ở đây không?
tôi nghĩ vậy, bạn có thể muốn xem b-tree vì b-tree có hiệu quả trong phạm vi truy vấn và so sánh. – Jasonw
Hmm, không chỉ mục giả sử tạo b-tree? Ý anh là, tôi nên tự mình tạo một cây b? – nikans
Phần trăm luôn ở cuối cụm từ tìm kiếm của bạn, không bao giờ bắt đầu? – mikel