0

一時テーブルではなく一時テーブルのようなサポート テーブルを作成するための大きなクエリがあります。このテーブルを作成するためのクエリのフィールドの 1 つは非常に問題があります。彼がいないと、15 秒で多くのサブクエリを含む 50k 行のテーブルを作成します。このフィールドでは実行できません。4 GB の RAM がすべてなくなり、クエリを完了できません。そのため、このフィールドを取り出して、フィールドなしでクエリを実行し、テーブルを作成してから、 ll は、1 つずつ更新するためだけに他のクエリを実行します。

私のフィールドクエリはこれです:

(select GROUP_CONCAT(nome) from con_classificador where FIND_IN_SET(id,(SELECT CONCAT(GROUP_CONCAT(fk),GROUP_CONCAT(pac.fk_classificador))
                                    FROM prod_assoc_classificador AS pac
                                    LEFT JOIN con_classificador AS cc4 ON pac.fk_classificador = cc4.id
                                    where pac.fk_produto = #HERE ID#)) and id != 7) AS categorias_texto

だから私はこのテーブルをfk_produtoで補助しており、それをこのサブクエリと結合して結果を取得し、各行を更新する必要があります。

したがって、補助テーブルにこのcategorias_texto行があり、このクエリと#HERE IDをフィードする必要があります#補助テーブルとこのサブクエリの両方に参加する必要があります

ちょっとおかしなことはわかっていますが、どうすればもっとうまく説明できるかわかりません。

4

1 に答える 1

2

JOINよりも効率的なa で試してくださいSUBQUERY

update 
tableA as ta 
inner join tableB as tb on ta.fk_product = tb.id
set ta.title = tb.title
于 2013-10-17T13:19:42.847 に答える