Tôi có một truy vấn mà trông như thế này:Tăng tốc truy vấn SDK SDK cục bộ của App Engine khi có nhiều thuộc tính đơn đặt hàng?
query = (models.Foo.all()
.filter('x =', x)
.filter('y =', y)
.filter('z =', z)
.filter('zz =', zz)
.order('-a'))
Nó chạy trên nền SDK địa phương trong ~ 100ms, và chạy trong đám mây với tốc độ chấp nhận được. Khi tôi thêm một trật tự thứ hai (vì vậy nó trông như thế này :)
query = (models.Foo.all()
.filter('x =', x)
.filter('y =', y)
.filter('z =', z)
.filter('zz =', zz)
.order('-a')
.order('-b'))
..it mất ~ 10s (100x dài hơn) trên SDK địa phương, và chạy với tốc độ tương tự như trước trong đám mây. Tôi cần phải có tài sản thứ tự thứ hai.
Một vài thông tin về các thiết lập: phiên bản
- Windows SDK 1.9.50
- Python 2.7
- Sử dụng mô hình
db
, khôngndb
- Tôi đã bắt đầu với một cơ sở dữ liệu tươi địa phương (thay thế datastore.db) và xây dựng lại các bản ghi từ đầu
- Có ~ 1200 thực thể Foo cục bộ (~ 3M trong đám mây)
- Tôi chạy
sqlite3 datastore.db "PRAGMA integrity_check
trên db cục bộ và không có lỗi nào được báo cáo
Câu hỏi: làm cách nào để truy vấn chạy nhanh hơn cục bộ? (Thật sự rất khó để phát triển với độ trễ 10 giây trong toàn bộ thời gian đó.)
Nếu bạn đã tìm nạp() và được sắp xếp trong python thì sao? – GAEfan
Trong đám mây truy vấn đang chạy hơn ~ 3M thực thể, do đó không thể thực hiện được, nó phải là truy vấn DB. – tom
Xin lỗi, câu hỏi có vẻ như là dành riêng cho SDK địa phương – GAEfan