mysql에서이 쿼리 시리즈의 성능을 향상시키는 데 어려움이 있습니다. 관련된 두 테이블 : TAB_PRODOTTI 및 TAB_PRODOTTI_PROVISSORIA는 정확히 동일한 열을 가지고 정렬됩니다.쿼리 개선 Mysql
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PRODOTTO_DESC = (SELECT PRODOTTO_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PRODOTTO_SCHEDA = (SELECT PRODOTTO_SCHEDA
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ATTIVITA_SCHEDA = (SELECT ATTIVITA_SCHEDA
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.TITOLO_PRODOTTO_MANUALE = (SELECT TITOLO_PRODOTTO_MANUALE
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.CANALE = (SELECT CANALE
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PERCORSO = (SELECT PERCORSO
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.MODALITA_RIVELAZIONE = (SELECT MODALITA_RIVELAZIONE
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.COEFF_OMOG_DEFINITO_1 = (SELECT COEFF_OMOG_DEFINITO_1
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.COEFF_OMOG_DEFINITO_2 = (SELECT COEFF_OMOG_DEFINITO_2
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.COEFF_OMOG_DEFINITO_3 = (SELECT COEFF_OMOG_DEFINITO_3
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ALLEGATO_1 = (SELECT ALLEGATO_1
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ALLEGATO_2 = (SELECT ALLEGATO_2
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ALLEGATO_1_DESC = (SELECT ALLEGATO_1_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ALLEGATO_2_DESC = (SELECT ALLEGATO_2_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.ALLEGATO_1_DESC = (SELECT ALLEGATO_1_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PRODOTTO_PIANO_PROD = (SELECT PRODOTTO_PIANO_PROD
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PRODOTTO_SUSSIDIARIETA = (SELECT PRODOTTO_SUSSIDIARIETA
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.NOTE = (SELECT NOTE
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.MODELLO_DESC = (SELECT MODELLO_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.AGGREGATO_DESC = (SELECT AGGREGATO_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.PROCESSO_DESC = (SELECT PROCESSO_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.LINEA_SERVIZIO_DESC = (SELECT LINEA_SERVIZIO_DESC
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
UPDATE wfpdb.TAB_PRODOTTI AA
SET AA.DT_FINE = (SELECT DT_FINE
FROM wfpdb.TAB_PRODOTTI_PROVVISORIA BB
WHERE AA.PRODOTTO_CD = BB.PRODOTTO_CD
AND AA.MODELLO_CD = BB.MODELLO_CD);
모든 의견을 환영합니다. 미리 감사드립니다.
모든 하위 쿼리가 동일한'where' claus 이자형. 아마 이것은 당신을 시작할 것입니다. http://stackoverflow.com/questions/5985264/mysql-update-multiple-columns-with-a-select-returning-multiple-rows –