我无法在mysql中提高这一系列查询的性能。 涉及的两个表:TAB_PRODOTTI和TAB_PRODOTTI_PROVISSORIA具有完全相同的列并进行排序。
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);
任何建议表示赞赏。 在此先感谢:)
答案 0 :(得分:1)
如果您在这些查询中有相同的加入列,那么您可以在一个查询中更新多个列,例如
更新
TAB_PRODOTTI AA,TAB_PRODOTTI_PROVVISORIA BB
SET AA.column1 = BB.column1, AA.column2 = BB.column2,
AA.column3 = BB.column3
在哪里AA.PRODOTTO_CD = BB.PRODOTTO_CD和AA.MODELLO_CD = BB.MODELLO_CD