2017-08-28 8 views
0

私は2000要素以上のpythonリストを持っています。私はこれらの要素のそれぞれについて質問する必要があるpostgressテーブルを持っています、私は現在以下を使用しています。これは何大規模なPythonリストとPsycopg2を使用してPostgressテーブルを検索します。

cur.execute("SELECT * FROM patent_info WHERE patentno = ANY (%s);", (list_of_patent,)) 

は、リスト内のすべての要素のための時間で表1に照会され、それに2000人以上の元素である私は、その後

data = cur.fetchall() 

問題を使用してデータフレームにこのデータを保存します応答に時間が掛かり、ときに私のWebアプリケーションがタイムアウトしたり、ブラウザがタイムアウトしたりすることがありました。

私は、テーブルからすべての要素をより高速にまたはより効率的にクエリする方法を探していました。

私はリスト内のすべての要素に対してforループを使用し、cur.fetchone()を使用することを考えましたが、それは遅くなると想定しました。

+0

は(<挿入コンマリストから値を区切り>)WHERE patentnoで行うようにしてください –

+0

は、データセットの伝送時間に対するクエリの実行時間を確認し、それを投稿してください。 –

+0

@ClodoaldoNetoどのように私はこれらの2つのパラメータの時間をチェックするのですか? – Sheikebab

答えて

0

代わりにjoinを行います

cursor.execute(""" 
    select * 
    from 
     patent_info 
     inner join 
     unnest(%s) u(patentno) using (patentno) 
""", (list_of_patent,)) 
+0

これにより、検索時間が大幅に短縮されました。ありがとう – Sheikebab

関連する問題