2013-01-24 5 views
5

Tôi có một CMS chạy trên Django 1.4 và cơ sở dữ liệu là Postgresql 9.1. Tôi có rất nhiều nội dung trong CMS và vấn đề tôi đang phải đối mặt ngay bây giờ là việc tìm kiếm Admin Django mất mãi mãi để lấy kết quả. Tôi muốn biết nếu có các tùy chọn để tối ưu hóa hành vi này của tìm kiếm Admin Django. Tôi biết rằng Django sử dụng truy vấn LIKE trên Postgresql để thực hiện tra cứu. Tôi biết rằng Postgresql 9.1 có chỉ số GIN và GIST có thể giúp tăng tốc hành vi này của Django. Tôi cũng có thể sửa đổi hành vi tìm kiếm này để làm cho nó nhanh và thỏa hiệp một chút về chất lượng của kết quả tìm kiếm. Tôi muốn biết cách tiếp cận tối ưu nhất để tối ưu hóa hành vi tìm kiếm này của Django?Django Admin Tối ưu hóa tìm kiếm

Trả lời

2

Nếu bạn không muốn thay đổi Django, hãy lập hồ sơ truy vấn tìm kiếm và thêm chỉ mục GIN và GIST thích hợp. Nếu không, bạn có thể muốn xem xét tích hợp một thứ gì đó như Haystack để tìm kiếm nhanh hơn một chút và không cần phải tăng cường cơ sở dữ liệu của bạn.

Liên kết hữu ích

http://www.rossp.org/blog/2009/jan/28/django-postgresql-fulltext/

2

Bạn có thể muốn sử dụng Django Debug toolbar để kiểm tra các truy vấn SQL thực sự chậm.

Chúng tôi thấy rằng Django admin's implicit use of UPPER dẫn đến việc Postgres bỏ qua tất cả các chỉ mục hiện có. Nếu đó là vấn đề bạn có thể tạo một chỉ mục trên đại diện chữ hoa của dữ liệu của bạn.