Query di accodamento lenta

di
Anonimizzato15373
il
6 risposte

Query di accodamento lenta

Ciao a tutti.
Sto creando un database che calcola statistiche di produzione.
All'inizio del calcolo delle statistiche vengono fatte 4 query di accodamento separate prendendo i dati da 4 tabelle presenti sul server, tutti i dati vanno in un'unica tabella temporanea del database locale sul quale poi lavoro.
Le 4 query sono lente (circa 15 secondi) e devono accodare circa dai 20 ai 25 mila records.
Nelle query non ci sono campi calcolati a parte uno (dove c'è un iif per il calcolo della quantità) che ho già provato a togliere ma il risultato non cambia.
Qualcuno sa darmi qualche suggerimento su come migliorare e/o velocizzare? Grazie

6 Risposte

  • Re: Query di accodamento lenta

    londance ha scritto:


    All'inizio del calcolo delle statistiche vengono fatte 4 query di accodamento separate prendendo i dati da 4 tabelle presenti sul server
    Non conosco questo aspetto (server)...ma

    londance ha scritto:


    tutti i dati vanno in un'unica tabella temporanea del database locale sul quale poi lavoro.
    Le 4 query sono lente (circa 15 secondi) e devono accodare circa dai 20 ai 25 mila records.
    Nelle query non ci sono campi calcolati a parte uno (dove c'è un iif per il calcolo della quantità) che ho già provato a togliere ma il risultato non cambia
    c'è da vedere come sono questi dati.
    Oppure, se tutto è corretto, non mi scandalizzerei di 15 secondi per un accodamento di decine di migliaia di record.
  • Re: Query di accodamento lenta

    Sto provando a ridurre al minimo le operazioni. Nel senso che sto cercando di includere nelle query di accodamento solo i campi strettamente necessari e di fare i dovuti aggiornamenti sugli altri campi dopo l'accodamento, in modo anche di lavorare sulla tabella locale ... ma il risultato non cambia.
  • Re: Query di accodamento lenta

    Bisogna vedere :
    - se la lentezza è causata dalla fase di lettura (selezione sul server) o da quella di scrittura (sul database locale).
    - di che tipo di serve parliamo? SQL Server, Oacle, DB2, MySQL, ...
    - come 'stanno' le tabelle a indici ?
    - sono sfruttati bene questi indici ?
    - si potrebbero creare delle stored procedure che preparano già le tabelle ?
    - si potrebbero collegare le tabelle al database locale?

    senza un minimo di informazioni è impossibile esprimere alcun consiglio.
  • Re: Query di accodamento lenta

    Le tabelle sono in un file di Access in una cartella sul server. Sono già collegate al database locale.
    Per quanto riguarda gli indici ho controllato ma non me ne intendo tantissimo purtroppo

    Siccome nella tabella principale c'è un ID contatore chiave primaria (quindi univoco), ho provato anche solo ad accodare quel campo e poi a recuperare tutte le informazioni che mi servono aggiornando la tabella temporanea ma la durata non cambia.
  • Re: Query di accodamento lenta

    londance ha scritto:


    Le tabelle sono in un file di Access in una cartella sul server. Sono già collegate al database locale.
    Bene.

    londance ha scritto:


    Per quanto riguarda gli indici ho controllato ma non me ne intendo tantissimo purtroppo
    Gli indici sono fondamentali per la velocità di esecuzione di una query.
    Ancor di più quando si devono manipolare decine di migliaia di record, perché la velocità di esecuzione è proporzionale alla buona o cattiva gestione degli indici.


    londance ha scritto:


    Siccome nella tabella principale c'è un ID contatore chiave primaria (quindi univoco), ho provato anche solo ad accodare quel campo e poi a recuperare tutte le informazioni che mi servono aggiornando la tabella temporanea ma la durata non cambia.
    Mah... Questi 'esperimenti' strani non servono ad un granché.

    Se le tabelle sono poco o male indicizzate, puoi fare anche i salti mortali tripli...
    ma i risultati non cambiano.
  • Re: Query di accodamento lenta

    Buongiorno a tutti!

    Propriamente indicizzati i campi dove filtro/ordino/ricerco ma senza risultati.
Devi accedere o registrarti per scrivere nel forum
6 risposte