Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812

    [access] prima interrogazione lenta su tabella con molti record

    su database access devo interrogare una tabella con solo 8 milioni di record, peso totale del db 800 MB.
    i risultati per ogni estrazione possono essere al massimo 12, i campi sono solo 6.


    il tempo di esecuzione e risposta a video (ad una prima interrogazione) arriva anche a 20 secondi,
    e si riduce notevolmente alle successive (velocità normale, qualche istante. anche se interrogata diversamente).


    al momento eseguo una normalissima query con ciclo di stampa:
    codice:
    SQL="select * from tabella where campo = '"&var&"' " 
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objConn
    
    
    do while not objRS.eof
    ' stampo
    objRS.movenext
    loop
    
    
    objRS.Close
    Set objRS = Nothing

    c'è qualche procedura che posso attuare affinché anche la prima sia più rapida?
    ho timore che gli utenti si sentano spaesati o che il db si incarti per più interrogazioni simultanee, sempre che sia un problema di db.

  2. #2
    "campo" è indicizzato?

    seconda cosa, non fare select * ma elenca esattamente le colonne che ti servono

    terzo, hai lo stesso problema se l'interrogazione la fai direttamente da "dentro" access?

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    non lo è. quindi mi suggerisci di farlo, giusto?

    ok provo a elencare i campi

    da dentro non son pratico, non lo uso mai come programma locale.



    ora provo applicando le prime due opzioni...

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    ho indicizzato il campo ed elencato i campi nella query.
    decisamente molto più rapido, mi pare meno di un secondo.

    solo che la prova l'ho potuta fare solo in locale.

    sai se c'è modo di indicizzare il campo via script per il db online?

  5. #5

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    ok. dopo un po' di verifiche preliminari, per non far danni su DB remoto, ho fatto l'indicizzazione del campo di selezione.

    non ho inserito nella query i singoli campi dato che quei sei che ci sono mi servono tutti.
    mi confermi che in questo caso non fa differenza?


    impressionante vedere una query prima svolta in 20 secondi, e poi praticamente istantanea!


    thanks for blessing


    ps:
    spero che il risultato ottimale non sia solo un caso

  7. #7
    non è un caso: gli indici servono proprio a quello! costano, ma aiutano

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 © 2025 vBulletin Solutions, Inc. All rights reserved.