3
我正在使用django,並且正在運行帶有210萬條記錄的postgresql數據庫。我有一個複雜的查詢需要20秒運行,並且需要很長的時間,因爲在查詢內部有一個合計count()
函數,最終計算150萬條記錄。不得不等待20秒我的應用程序不能接受。如何提高此django ORM查詢的性能?
Django的ORM「查詢」如下:
WebRequest.objects.values('FormUrl', 'Request__Platform','Request__Ip').annotate(total=Count('Request__Ip')).order_by('-total')[:10]
我試着用表的索引,但這幾乎不降低延遲。
現在我正在考慮將數據保存在表中,並且通過pgadmin/cronjob/task scheduler每隔一小時重新生成一次表。
drop table if exists <table> tbl; select into <tabel> tbl from query;
我確實覺得這是一個馬虎的修復,並假設必須有一個更好的方法來減少時間。
有沒有更好的方法,或者你們認爲這是一個可接受的解決方案?
有什麼事情可以先篩選下來的記錄註解?處理這些記錄總是需要一些時間 – Sayse