私は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]
Iは、テーブルインデックスを使用しようとしたが、これはほとんどの遅延を低減しません。
これでデータをテーブルに保存し、毎時pgadmin/cronjob/task schedulerでテーブルを再生成することを検討しています。
drop table if exists <table> tbl; select into <tabel> tbl from query;
私はこれがちょっとした修正だと思って、時間を減らすためのよりよい方法が必要であると考えます。
これより優れたアプローチがありますか、またはこれを許容可能なソリューションとみなしていますか?
前にレコードを絞り込むことができものはあります注釈?レコードの量を扱うことは、いつも時間がかかるでしょう – Sayse