Django 1.3アプリケーションと統合されたPostgreSqlに7つのテーブルがあります.7つのテーブルのうち、異なる列データを持つすべてのテーブルに存在する名前に基づいてアクセスします.特定の名前には1,00,000行が含まれています.だから、私の問題テーブル内の特定の名前データに属するすべての行を取得する必要があります。
そのため、検索操作用にdjangoモデルormクエリセットを実装しましたが、効果的ではないようです。ページネーションを行い、すべてのテーブルのすべての列のインデックスを作成しても、ページをロードするのに非常に時間がかかります。
それでも私はnginx-504ゲートウェイタイムアウトを取得しています
したがって、すべてのテーブルから 1,00,000 行も取得するクエリを最適化する必要があります。
クエリの最適化を改善するために必要な方法は何ですか?
このような困難な操作に対してdjangoでどのようにアプローチすればよいですか?
ここにコードを貼り付けましたhttp://pastebin.com/yNy5pxGG
正しい方向を教えてください!
EDIT1:
私のクエリ: http://pastebin.com/A9B2ExVk
表:
fda_sheet1 = 208778 unique rows
fda_sheet2 = 291958 unique rows
fda_sheet3 = 191958 unique rows
fda_sheet4 = 676363 uniq rows
fda_sheet5 = 262651
fda_sheet6 = 742707
fda_sheet7 = 300000
これらは私の個々のテーブルと行数です。ここでは、パフォーマンスのために 1 つのテーブルを作成するために、すべての LEFT JOIN を作成しています。
テーブルのサイズが 700GB を超えているため、これも好ましくありません。
クエリを処理する方法は何ですか?
注:
これらのテーブルには、さまざまなレベルのデータが含まれています。主に、薬剤名と ISR 番号があります。また、ISR 番号は、他のすべてのテーブルに存在します。薬剤に基づいて、ISR 番号を取得し、ISR 番号を使用して他のデータを照会します。他のテーブルで。ボトルネックを理解していただければ幸いです
というわけで、 1.テーブルの組み合わせも問題 700GBを超えてから
2.複数のテーブルにまたがるクエリも問題です。各テーブルの複数の行には同じisr番号があるためです。
他に最善の方法はありますか?
ご不明な点がございましたら、お知らせください
plz これを修正するように提案してください。