2012-09-02 43 views
12

Tôi đang sử dụng các dòng sau để lặp trên các hàng của truy vấn Sqlite.Có cách nào nhanh hơn để lặp qua các hàng từ truy vấn Sqlite không?

this.open(); // opening db 
Cursor cursor = db.rawQuery(strQuery, null); 

cursor.moveToFirst(); 
do {  

    // do something  

} while (cursor.moveToNext()); 

cursor.close(); 

Khi số lượng hàng khoảng 15000 phải mất nhiều thời gian. Mất khoảng 4 giây để trống while khối và khoảng 6 giây cho while khối có một số mã. Nó cho thấy rằng việc lặp lại trên các hàng theo cách này là tốn thời gian.

Có cách nào nhanh hơn để lặp lại trên các hàng trong Android và Sqlite không?

Cảm ơn,

+0

Tôi không chắc chắn trường hợp sử dụng của bạn cho SQLite, nhưng điều này có thể được sử dụng: http://shopwith.it/2011/12/16/how-to-improve-android -app-performance-by-caching-data-in-sqlite-và-hình ảnh-to-the-sd-card-android-developer-tips/ – Eric

+0

Nếu bạn muốn, bạn có thể giải thích lý do bạn cần truy xuất quá nhiều hồ sơ cùng một lúc? Ngoài ra, bạn không thể thu gọn xuống mức thấp hơn trong câu lệnh SELECT? –

Trả lời

4

Tối ưu hóa những gì bạn làm trong vòng lặp là cách duy nhất để cải thiện tốc độ của toàn bộ thao tác. Ví dụ: nếu bạn đang thực hiện các cuộc gọi trên mỗi lần lặp lại, bạn sẽ mất thời gian quý báu. Làm điều đó một lần, lưu trữ giá trị.

Sử dụng traceView để xác định vị trí bạn đang mất thời gian và cải thiện ở đó. Đáng buồn là tôi không thể đưa ra một câu trả lời cụ thể, vì tôi không biết bạn đang làm gì bên trong vòng lặp.


Traceview Debugging

Các vấn đề liên quan