Chào mọi người,
Em có bài tập lớp về Từ điển Anh Việt. em sử dụng Sqlite nhưng trong lúc dùng để lấy dữ liệu
chẳng hạn " select word from Dictionary where word like ‘t%’ "
( dữ liệu của em khoảng 56 MB 140k record) thì từ điển của em chạy hơi chậm có lúc còn bị đơ
em đã cố gắng google nhưng thực sự em chưa rõ lắm
Mong mọi người giúp đỡ ạ
SQLite truy vấn dữ liệu chậm trong java
Đơn giản là vì dữ liệu của bạn quá lơn thôi. SQLite không được thiết kế để handle kiểu truy vấn này. bạn có thể tạo ra trie trong memory để truy xuất từ sqlite records để nhanh hơn
dạ cho em hỏi tree là gì với ạ ??? em mới tìm hiểu nên không rõ ạ
theo mình thì mình có mấy cách ko biết có hữu dụng:
- mình chia bảng theo vần chữ cái từ a đến z để khi query sẽ mhanh hơn.
- là mình chia cache load toàn bộ bản ghi lên cache là list cache chia cache theo vần chữ cái sau đó thực hiện tìm kiếm.
-> đối với data có dữ liệu lớn chút mà lại dùng trên db loại nhỏ sẽ cần tìm hiểu 1 số phương pháp phân data theo loại nhỏ sau đó áp dụng các phương pháp tìm kiếm dùng thread để in the same time có thể tìm kiếm đc trên nhiều cache hay bảng có lẽ sẽ nhanh chút. hy vọng hữu ích cho b
Công cụ là do con người tạo ra để giải quyết các vấn đề.
Nó cũng có một giới hạn nào đó.
Ở đây do dữ liệu quá lớn nên truy vấn chậm.
Đây là lúc bạn vận dụng kiến thức, kỹ năng, sự sáng tạo của mình để giải quyết vấn đề này.
Có thể tham khảo giải pháp của những người khác để học hỏi.
Mình không có viết sai chính tả đâu. Tìm hiểu về trie bạn nhé. Nó được thiết kế cho prefix search như kiểu bạn đang làm
Không biết dữ liệu của bạn là kiểu sql hay nosql, mình không rành về java hay sqlite nhưng nếu là nosql mà dữ liệu 54mb, sqlite không đáp ứng đc bạn có thể tự thiết kế cho mình một cấu trúc dữ liệu để có thể truy vấn nhanh hơn, hash table có thể là 1 lựa chọn nhưng mình đề nghị bạn dùng b-tree, trong couchdb người ta cũng sử dụng b-tree để truy xuất dữ liệu. Còn nếu là kiểu dữ liệu sql thông thường bạn có thể hạ bậc của dữ liệu để truy vấn nhanh hơn ^^