改进查询Mysql

时间:2013-12-12 16:50:49

标签: mysql

我无法在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); 

任何建议表示赞赏。 在此先感谢:)

1 个答案:

答案 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