Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209

    Ottimizzare Select con Join tra due tabelle [ORACLE]

    Ciao a tutti.
    Sto cercando di leggere due viste di un database che contengono delle somme relative alla formazione di determinati dipendenti.
    Questa vista permette di visualizzare i crediti e le ore di un determinato settore dell'azienda.
    Questa vista è il raggruppamento di un'altra vista che contiene migliaia di record.
    LE viste sono simili, una permette di rintracciare la formazione come partecipante e l'altra come partecipante attivo al corso (Docente, progettista, ...)

    Quando cerco di eseguire la query di select fra queste due viste ci impiega un'eternità raggiungendo molto spesso il time out del server.

    Questa query deve permettere di visualizzare le informazioni su un sito nella intranet aziendale.

    Il server che utilizzo per il WEB è IIS e come linguaggio di programmazzione ASP.
    I dati, come già citato nel titolo, sono memorizzati su un database ORACLE.

    Riuscite a darmi una mano?

    codice:
    SELECT 
       V_EL_DOC.DIPARTIMENTO AS DIPARTIMENTO,
       V_EL_DOC.COD_DIPARTIMENTO AS CODDIPARTIMENTO, 
       SUM(ORE) AS ORE, 
       SUM(CRED) AS CREDITO, 
       SUM(ORE_FREQ) AS OREFORM, 
       SUM(CREDITO) AS CREDITOFORM 
    FROM 
       V_EL_FORM 
    INNER JOIN 
       V_EL_DOC 
    ON 
       V_EL_FORM.COD_DIPARTIMENTO = V_EL_DOC.COD_DIPARTIMENTO 
    GROUP BY 
       V_EL_DOC.DIPARTIMENTO, 
       V_EL_DOC.COD_DIPARTIMENTO 
    ORDER BY 
       V_EL_DOC.DIPARTIMENTO
    Le viste sono V_EL_DOC e V_EL_FORM. Quest'ultima è quella più pesante.

    Grazie milel a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Cercando in internet ho trovato forse qualcosa... Ho letto che è meglio prima eseguire le due tabelle singolarmente e poi metterle in join... ma come si fa????

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Forse con questo sistema?

    codice:
    SELECT * 
    FROM 
       (SELECT 
          DIPARTIMENTO AS DIPARTIMENTO, 
          COD_DIPARTIMENTO AS CODDIPARTIMENTO, 
          SUM(ORE_FREQUNZA) AS OREFORM, 
          SUM(CREDITO) AS CREDITOFORM 
       FROM 
          V_EL_FORM_RAGG_OUV 
       GROUP BY 
          DIPARTIMENTO, 
          COD_DIPARTIMENTO 
       ORDER BY 
          DIPARTIMENTO) 
       AS 
          TABFORM 
    INNER JOIN 
       (SELECT 
          DIPARTIMENTO, 
          COD_DIPARTIMENTO, 
          SUM(ORE) AS ORE, 
          SUM(CREDITi) AS CREDITO 
       FROM 
          V_EL_DOC_RAGG_OUV 
       GROUP BY 
          DIPARTIMENTO, 
          COD_DIPARTIMENTO 
       ORDER BY 
           DIPARTIMENTO) 
       AS 
          TABDOC 
    ON 
       TABFORM.COD_DIPARTIMENTO = TABDOC.COD_DIPARTIMENTO
    Solo che mi dice:
    codice:
    comando SQL terminato erroneamente
    Me che vuol dire?

  4. #4
    visto che da V_EL_DOC prendi solo la descrizione del dipartimento, proviamo a isolare la query

    se esegui questa

    codice:
    SELECT 
       COD_DIPARTIMENTO AS CODDIPARTIMENTO, 
       SUM(ORE) AS ORE, 
       SUM(CRED) AS CREDITO, 
       SUM(ORE_FREQ) AS OREFORM, 
       SUM(CREDITO) AS CREDITOFORM 
    FROM 
       V_EL_FORM 
    GROUP BY 
       COD_DIPARTIMENTO 
    ORDER BY 
       COD_DIPARTIMENTO
    come sono i tempi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Su quella vista sono veloci.
    Sono su V_EL_FORM che sono lunghi....

  6. #6
    Originariamente inviato da dtomasini
    Su quella vista sono veloci.
    Sono su V_EL_FORM che sono lunghi....
    la query che ti ho chiesto di provare coinvolge solo V_EL_FORM ...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Scusa sono ubriaco....
    E' questa la vista che rappresenta il problema. Tieni presente che contiene tutti i corsi che ogni persona ha sostenuto all'interno dell'azienda (più di 1100 dipendenti) la V_EL_DOC invece è più leggera.
    E comunque da V_EL_DOC prendo anche SUM(ORE) e SUM(CREDITO)

  8. #8
    rifaccio la domanda: la query che ti ho chiesto di provare è più veloce della tua o no?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Originariamente inviato da optime
    rifaccio la domanda: la query che ti ho chiesto di provare è più veloce della tua o no?
    Ah quello no purtroppo il database non ce l'ho sottomano ora. Ma SUM(ORE) AS ORE e SUM(CRED) AS CREDITO fanno parte della vista V_EL_DOC non è che mi darà errore?

    Grazie Mille.

  10. #10
    allora per piacere riscrivi la prima tua query indicando per bene le tabelle/viste di provenienza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.