2009-07-30 32 views
10

Tôi vừa chèn các bản ghi 1million vào một bảng sqlite đơn giản với năm cột. Mất 18 giờ trong java bằng cách sử dụng trình điều khiển jdbc! Tôi đã làm điều tương tự trong python2.5 và mất chưa đầy một phút. Tốc độ cho các truy vấn chọn có vẻ ổn. Tôi nghĩ rằng đây là một vấn đề với các trình điều khiển jdbc.Chèn sqlite chậm sử dụng trình điều khiển jdbc trong java

Có trình điều khiển nhanh hơn cho sqlite3 trong java không?

Tốc độ chèn số hàng lớn rất quan trọng đối với tập lệnh di chuyển giản đồ của tôi và tôi không muốn sử dụng tập lệnh bên ngoài để thực hiện di chuyển nếu tôi không phải thực hiện.

CHỈNH SỬA: cố định với connection.setAutoCommit (sai); cảm ơn Mark Rushakoff vì đã gợi ý cho tôi giải pháp :)

Trả lời

19

Bạn có truy vấn của mình được tự động chuyển? Điều đó có thể giải thích tại sao nó mất quá lâu. Hãy thử gói chúng trong một bắt đầu/kết thúc để nó không phải làm một cam kết đầy đủ cho mỗi chèn.

This page giải thích giao dịch bắt đầu/kết thúc, trong khi chạm FAQ khi chèn/tự động sửa.

+0

Điều đó đã thực hiện mẹo, cảm ơn! –

+0

cải thiện hiệu suất 1000x ... Cảm ơn – Ewoks

2

Nếu bạn muốn tối ưu hóa thêm, bạn có thể xem xét việc ghép nối các truy vấn chèn của bạn với nhau. Vì vậy, bạn có thể thay đổi 1 triệu chèn vào 1000 chèn 1000 lô.

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