2つの異なるテーブル間でデータをはるかに高速に比較するにはどうすればよいですか

アリャ

2つの異なるデータベースから2つの異なるテーブルがあります。両方のテーブルに大量のデータがありますが、両方のテーブルに同じ列があります。

以下のコードを試してみると、パフォーマンスの問題が発生しています(従業員テーブルには2つのレコードしかありませんが、部門テーブルには10万レコードあります)。比較に10分以上かかります。

パフォーマンスを低下させて高速化する方法はありますか?

EmplTbl = cur.execute("select A , B , C from EmployeeTable where EmplName in ('A','B')") 
for line in EmplTbl:
    EmplData.append(line)

DeptTbl = cur.execute("select A , B , C from DeptTable") 

for line in DeptTbl:
    DeptData.append(line)

for Empl in EmplData:
    DeptResult = all(Empl in DeptData for elm in DeptData)
    if DeptResult:
        print("Yes")
    else:
        print("No")
サムメイソン

あなたのコードはあなたが期待するよりも指数関数的に多くの仕事をしているようです。あなたのライン:

DeptResult = all(Empl in DeptData for elm in DeptData)

暗黙的に実行しています:

DeptResult = True
for elem in DeptData:
  for tmp in DeptData:
     DeptResult = DeptResult and Empl == tmp

つまりDeptData、必要なのが1つだけの場合に、ネストされたパスを2つ作成するため、len(DeptData) ** 2操作が必要になります。これは、1e10の比較を行おうとしていることを意味し、完了するまでに非常に長い時間がかかります。

私はこれを次のように書き直します:

cur.execute("select A , B , C from DeptTable")
dept_entries = set(cur)

cur.execute("select A , B , C from EmployeeTable where EmplName in ('A','B')") 
for empl in cur:
  if empl in dept_entries:
    print(empl, 'Yes')
  else:
    print(empl, 'No')

Pythonデータベースコネクタは通常、executeメソッドから結果を返さないため、fetch*メソッドの1つを呼び出すか、カーソルを反復処理する必要があることに注意してください私はOracleを使用していませんが、他の投稿では、標準に従う必要があり、コードが壊れていることが示唆されています

を入れるDeptTableというsetことは、ルックアップが今O(1)であり、したがってempl in dept_entries非常に安いことを意味します

注:tuplePythonで平等がどのように機能するかについてのチュートリアルsetや、基本的な反復のようなデータ構造を確認する価値があるかもしれません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL Serverの2つの異なるテーブルのセルのデータを比較するにはどうすればよいですか?

分類Dev

2つの異なるSQLテーブルを比較して異なる値を取得するにはどうすればよいですか?

分類Dev

異なるデータベース(SQL Server)にある2つのテーブルを関連付けるにはどうすればよいですか?

分類Dev

2つの異なるテーブルを結合するにはどうすればよいですか?

分類Dev

MatLab:異なるデータ型の2つの配列をテーブルに追加するにはどうすればよいですか?

分類Dev

orientDBの同じテーブルから2つの異なるエッジのデータを取得するにはどうすればよいですか?

分類Dev

PostgreSQLを使用して異なるデータベースの2つのテーブルを接続するにはどうすればよいですか?

分類Dev

Djangoビューで2つの異なるテーブルの列を比較するにはどうすればよいですか?

分類Dev

Djangoビューで2つの異なるテーブルの列を比較するにはどうすればよいですか?

分類Dev

mysql(LEFT JOIN)の2つの異なるテーブルのデータを接続するにはどうすればよいですか?

分類Dev

2つの2つの要素データセット間で異なるオブジェクトを取得するにはどうすればよいですか?

分類Dev

2つの異なるテーブルのMySQLデータをリンクして表示するにはどうすればよいですか?

分類Dev

2つのGoogleFusionテーブルのデータを使用するにはどうすればよいですか?

分類Dev

2つの異なるテーブルから2つの異なる列の同期を維持するにはどうすればよいですか?

分類Dev

YII2の2つのデータベーステーブルフィールドを比較するにはどうすればよいですか?

分類Dev

列に基づいてサイズの異なる2つのデータフレームを比較するにはどうすればよいですか?

分類Dev

2つの異なるパンダデータフレームで値を相互に比較するにはどうすればよいですか

分類Dev

Pythonでサイズの異なる2つのデータフレームの値のペアを比較するにはどうすればよいですか?

分類Dev

内容の異なる2つの同じテーブルで構成されるテーブルを作成するにはどうすればよいですか?

分類Dev

2つのテーブルを比較するにはどうすればよいですか?

分類Dev

Angular 2テーブルコンポーネント間でデータを共有して、それぞれが異なるデータを持つことができるが、同じテーブルコンポーネントのみを使用するようにするにはどうすればよいですか?

分類Dev

2つの異なるデータベース間でmysqlに外部キーを設定するにはどうすればよいですか?

分類Dev

PostgreSQLで異なるテーブルの特定の2列のデータをカウントするにはどうすればよいですか?

分類Dev

Bootstrapのテーブル間でデータを取得するにはどうすればよいですか?

分類Dev

Rutaルール内の2つの異なるアノテーションの機能を比較するにはどうすればよいですか?

分類Dev

mysqlの条件が異なるテーブルから2つの異なる値を選択するにはどうすればよいですか?

分類Dev

共通の列が2つしかない2つの異なるテーブルの重複値を削除するにはどうすればよいですか?

分類Dev

2つのテーブル間で最大の収益を得るにはどうすればよいですか?

分類Dev

3つのテーブルを結合し、2つの異なる条件でフィールドを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    SQL Serverの2つの異なるテーブルのセルのデータを比較するにはどうすればよいですか?

  2. 2

    2つの異なるSQLテーブルを比較して異なる値を取得するにはどうすればよいですか?

  3. 3

    異なるデータベース(SQL Server)にある2つのテーブルを関連付けるにはどうすればよいですか?

  4. 4

    2つの異なるテーブルを結合するにはどうすればよいですか?

  5. 5

    MatLab:異なるデータ型の2つの配列をテーブルに追加するにはどうすればよいですか?

  6. 6

    orientDBの同じテーブルから2つの異なるエッジのデータを取得するにはどうすればよいですか?

  7. 7

    PostgreSQLを使用して異なるデータベースの2つのテーブルを接続するにはどうすればよいですか?

  8. 8

    Djangoビューで2つの異なるテーブルの列を比較するにはどうすればよいですか?

  9. 9

    Djangoビューで2つの異なるテーブルの列を比較するにはどうすればよいですか?

  10. 10

    mysql(LEFT JOIN)の2つの異なるテーブルのデータを接続するにはどうすればよいですか?

  11. 11

    2つの2つの要素データセット間で異なるオブジェクトを取得するにはどうすればよいですか?

  12. 12

    2つの異なるテーブルのMySQLデータをリンクして表示するにはどうすればよいですか?

  13. 13

    2つのGoogleFusionテーブルのデータを使用するにはどうすればよいですか?

  14. 14

    2つの異なるテーブルから2つの異なる列の同期を維持するにはどうすればよいですか?

  15. 15

    YII2の2つのデータベーステーブルフィールドを比較するにはどうすればよいですか?

  16. 16

    列に基づいてサイズの異なる2つのデータフレームを比較するにはどうすればよいですか?

  17. 17

    2つの異なるパンダデータフレームで値を相互に比較するにはどうすればよいですか

  18. 18

    Pythonでサイズの異なる2つのデータフレームの値のペアを比較するにはどうすればよいですか?

  19. 19

    内容の異なる2つの同じテーブルで構成されるテーブルを作成するにはどうすればよいですか?

  20. 20

    2つのテーブルを比較するにはどうすればよいですか?

  21. 21

    Angular 2テーブルコンポーネント間でデータを共有して、それぞれが異なるデータを持つことができるが、同じテーブルコンポーネントのみを使用するようにするにはどうすればよいですか?

  22. 22

    2つの異なるデータベース間でmysqlに外部キーを設定するにはどうすればよいですか?

  23. 23

    PostgreSQLで異なるテーブルの特定の2列のデータをカウントするにはどうすればよいですか?

  24. 24

    Bootstrapのテーブル間でデータを取得するにはどうすればよいですか?

  25. 25

    Rutaルール内の2つの異なるアノテーションの機能を比較するにはどうすればよいですか?

  26. 26

    mysqlの条件が異なるテーブルから2つの異なる値を選択するにはどうすればよいですか?

  27. 27

    共通の列が2つしかない2つの異なるテーブルの重複値を削除するにはどうすればよいですか?

  28. 28

    2つのテーブル間で最大の収益を得るにはどうすればよいですか?

  29. 29

    3つのテーブルを結合し、2つの異なる条件でフィールドを取得するにはどうすればよいですか?

ホットタグ

アーカイブ