2

私は2つのテーブルを持っています。Total_DataおよびDistinct_S1

Total_Dataには 350 万行あります。フィールド: 「S1」、「S2」、「S3」、「S4」

Distinct_S1には 100 万行あります。フィールド: 「S1」、「頻度」。Distinct_S1の「 S1」は、 Total_Dataの「S1」で発生するすべての個別の値で構成されます。

当面のタスク: S1 = 'xxyy' に対するDistinct_S1の「頻度」(仮定) は、Total_Data で「 xxyy 」が発生する回数で構成される必要があります。

目前のタスクを実行するために、python スクリプト (インポートされた MySQLdb) 内から次のクエリを使用しました。

cur.execute("update Distinct_S1 set frequency=(select count(*) from Total_Data where S1='%s') where S1='%s'"%(S1_val, S1_val)

上記のクエリは正常に機能しますが、かなり時間がかかるようです。同じことを達成するための他のより速い方法はありますか?

4

1 に答える 1

1

複数テーブルの更新構文を結合と共に使用して、すべての行を一度に更新できます。構文については、マニュアルを参照してください。

ただし、最初に個別の値を設定せずに、テーブルにすべての値を直接挿入する方がはるかに簡単です。

INSERT INTO Distinct_S1 (S1, frequency)
SELECT S1, COUNT(*)
FROM Total_Data
GROUP BY S1
于 2012-07-21T18:17:57.177 に答える