Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it L'avatar di mdegiova
    Registrato dal
    Feb 2009
    residenza
    Sondrio
    Messaggi
    134

    alleggerire elaborazione della pagina asp

    salve a tutti, ho un problema di lentezza nel ricercare i dati da un DBF che pesa 10 M

    utilizzo la seguente querry :
    .......
    ....

    QURB1 = "select * From "&COD&""&SEZ&"U where C like '"&ID_IMM&"' and E like '"&ID_PRO&"' and F like '1' and X like '"&REGISTR&"' and AB like '"&NOTA&"'"
    set URB1 = connURB.execute(QURB1)
    ........
    .......

    potete dirmi se esiste un metodo per accelerare questa ricerca la mia pagina ci mette circa 10 secondi e non è presente grafica.

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: alleggerire elaborazione della pagina asp

    Originariamente inviato da mdegiova
    salve a tutti, ho un problema di lentezza nel ricercare i dati da un DBF che pesa 10 M

    utilizzo la seguente querry :
    .......
    ....

    QURB1 = "select * From "&COD&""&SEZ&"U where C like '"&ID_IMM&"' and E like '"&ID_PRO&"' and F like '1' and X like '"&REGISTR&"' and AB like '"&NOTA&"'"
    set URB1 = connURB.execute(QURB1)
    ........
    .......

    potete dirmi se esiste un metodo per accelerare questa ricerca la mia pagina ci mette circa 10 secondi e non è presente grafica.
    Sei sicuro di dover usare tutti questi like?
    Hai indicizzato la tabella dalla quale estrai i dati?

    Un DB di 10 MB è un DB molto piccolo, quindi devi vedere come hai strutturato le tabelle dello stesso.

  3. #3
    Utente di HTML.it L'avatar di mdegiova
    Registrato dal
    Feb 2009
    residenza
    Sondrio
    Messaggi
    134
    sto tendando di indicizzare la tabella con create index ma non comprendo bene la sintassi mi pui dire dove sbaglio

    .......
    .....
    strPath = Server.MapPath("../../DATI/"&comune_1&"/")
    set connURB= server.CreateObject("Adodb.connection")
    connURB.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& strPath &"; Extended Properties=dBASE IV;"
    set sqltextURB = server.CreateObject("Adodb.recordset")

    CREATE INDEX rossi ON "&COD&""&SEZ&"U (C, E)

    QURB1 = "select * From "&COD&""&SEZ&"U where C like '"&ID_IMM&"' and E like '"&ID_PRO&"' and F like '1' and X like '"&REGISTR&"' and AB like '"&NOTA&"'"

    set URB1 = connURB.execute(QURB1)

    .............................
    .......................

    grazie

  4. #4
    se tutte le LIKE sono come questa

    ... like '1' ...

    direi che puoi tranquillamente usare l'uguale

    ='1'

    se vuoi una vera LIKE devi scrivere

    ... like '%1%' ...


  5. #5
    Utente di HTML.it L'avatar di mdegiova
    Registrato dal
    Feb 2009
    residenza
    Sondrio
    Messaggi
    134
    ok ho sostituito con uguale,

    sapete dirmi come posso indicizzare la ricerca in un database dbf, il dbf non posso toccarlo.

    grazie

  6. #6
    con = è lento come con LIKE? ma poi, lento *quanto*?

  7. #7
    Utente di HTML.it L'avatar di mdegiova
    Registrato dal
    Feb 2009
    residenza
    Sondrio
    Messaggi
    134
    i dati nel dbf sono spalmati su 3 righe con un identificativo che li acomuna come segue :

    ....
    .....
    23 | 1 | Andrea | Rossi | 15/10/81 |
    23 | 2 |Via Roma | 15| Roma|
    23 | 3 |Sposato | Figli |
    24 | 1 | Marco | Giggio | 12/05/75 |
    24 | 2 |Piazza Marconi| 18| Napoli|
    24 | 3 |Divorziato | Figli |
    ......
    .....

    io sto ricercando nel seguente modo :

    strPath = Server.MapPath("../../DATI/PERSONALE")
    set connURB= server.CreateObject("Adodb.connection")
    connURB.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& strPath &"; Extended Properties=dBASE IV;"
    set sqltextURB = server.CreateObject("Adodb.recordset")

    QURB1 = "select * From DIPENDENTI where C='"&ID_IMM&"' and E='"&ID_PRO&"' and F='1' and X like '"&REGISTR&"' and AB like '"&NOTA&"'"
    set URB1 = connURB.execute(QURB1)

    if URB1.EOF then

    else
    while not URB1.EOF

    QURB2 = "select * From DIPENDENTI where C='"&C_URB1&"' and E='"&E_URB1&"' and F='2'"
    set URB2 = connURB.execute(QURB2)

    if URB2.EOF then

    else
    while not URB2.EOF

    QURB3 = "select * From DIPENDENTI where C='"&C_URB1&"' and E='"&E_URB1&"' and F='3' "
    set URB3 = connURB.execute(QURB3)

    if URB3.EOF then

    else
    while not URB3.EOF

    ------------------
    MIA TABELLA DOVE VERRANNO VISUALIZATI I RISULTATI
    --------------------

    URB3.movenext
    wend
    URB3.close
    set URB3 = Nothing
    end if

    URB2.movenext
    wend
    URB2.close
    set URB2 = Nothing
    end if

    URB1.movenext
    wend
    URB1.close
    set URB1 = Nothing
    end if


    questa operazione impiega circa 13 secondi e il dbf è da 10 M devo ridurre i tempi di attesa...
    non so come fare

  8. #8
    giacché ci sei, spiegaci anche cosa vuoi fare e come vuoi i risultati in uscita

  9. #9
    Utente di HTML.it L'avatar di mdegiova
    Registrato dal
    Feb 2009
    residenza
    Sondrio
    Messaggi
    134
    OK ... vediamo tutto :

    Struttura del "DIPENDENTI.dbf" da 10 M contenuto nella cartella "PERSONALE" :

    A | B | C | D | E |
    --------------------------------------------
    23 | 1 | Andrea | Rossi | 15/10/81 |
    --------------------------------------------
    23 | 2 | Via Roma | 15| Roma|
    --------------------------------------------
    23 | 3 | Sposato | Figli | |
    --------------------------------------------
    24 | 1 | Marco | Giggio | 12/05/75 |
    --------------------------------------------
    24 | 2 |Piazza Marconi| 18| Napoli|
    --------------------------------------------
    24 | 3 | Divorziato | Figli | |
    --------------------------------------------
    25 | 1 | Andrea | Rossi | 13/05/76 |
    --------------------------------------------
    25 | 2 | Via magenta | snc| Milano|
    --------------------------------------------
    25 | 3 | Separato | | |
    --------------------------------------------


    1) prima mi connetto al mio database :

    strPath = Server.MapPath("PERSONALE")
    set connURB= server.CreateObject("Adodb.connection")
    connURB.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& strPath &"; Extended Properties=dBASE IV;"
    set sqltextURB = server.CreateObject("Adodb.recordset")

    2) Ora inizio le mie ricerche per ottenere un risultato univoco, le ricerche mi devono dare una sola persona :

    ricerco nella riga B = 1 ( che contiene i dati nome, cognome, data di nascita)

    QURB1 = "select A, C, D, max(E) as E1 From DIPENDENTI where C='Andrea' and D='Rossi' and B='1' group by A,C,D"
    set URB1 = connURB.execute(QURB1)

    if URB1.EOF then

    else
    while not URB1.EOF

    COD = URB1("A")
    NOME = URB1("C")
    COGNOME = URB1("D")
    DATA = URB1("E1")

    3) immediatamente ricerco i dati nella riga B = 2 ( indirizzo )

    QURB2 = "select * From DIPENDENTI where A='"&COD&"' and F='2'"
    set URB2 = connURB.execute(QURB2)

    if URB2.EOF then

    else
    while not URB2.EOF

    INDIRIZZO = URB2("C")
    CIVICO = URB2("D")
    CITTA = URB2("E")


    4) immediatamente ricerco i dati nella riga B = 3 ( stato di famiglia )

    QURB3 = "select * From DIPENDENTI where A='"&COD&"' and F='3' "
    set URB3 = connURB.execute(QURB3)

    if URB3.EOF then

    else
    while not URB3.EOF

    STATO = URB3("C")
    PROLE = URB3("D")

    5) ora visualizzo i miei risultati in una semplice tabella :


    ------------------------------------------------------------------------------------------------------------
    URB1("A") | URB1("C") | URB1("D") | URB1("E") | URB2("C") | URB2("D") | URB2("E") | URB3("C") | URB3("D") |
    --------------------------------------------------------------------------------------------------------------

    6) chiudo tutte le ricerche e il collegamento AL DBF

    URB3.movenext
    wend
    URB3.close
    set URB3 = Nothing
    end if

    URB2.movenext
    wend
    URB2.close
    set URB2 = Nothing
    end if

    URB1.movenext
    wend
    URB1.close
    set URB1 = Nothing
    end if

    connURB.close
    set connURB = nothing

    L'operazione impega da i 10 ss ai 13 ss, devo riuscire ad alleggerirla

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Originariamente inviato da mdegiova
    OK ... vediamo tutto :

    Struttura del "DIPENDENTI.dbf" da 10 M contenuto nella cartella "PERSONALE" :

    A | B | C | D | E |
    --------------------------------------------
    23 | 1 | Andrea | Rossi | 15/10/81 |
    --------------------------------------------
    23 | 2 | Via Roma | 15| Roma|
    --------------------------------------------
    23 | 3 | Sposato | Figli | |
    --------------------------------------------
    24 | 1 | Marco | Giggio | 12/05/75 |
    --------------------------------------------
    24 | 2 |Piazza Marconi| 18| Napoli|
    --------------------------------------------
    24 | 3 | Divorziato | Figli | |
    --------------------------------------------
    25 | 1 | Andrea | Rossi | 13/05/76 |
    --------------------------------------------
    25 | 2 | Via magenta | snc| Milano|
    --------------------------------------------
    25 | 3 | Separato | | |
    --------------------------------------------
    solo per capire...
    ABCDE sono le colonne, 23/24/25 sono gli identificativi utente, e 1/2/3 nome/indirizzo/stato. giusto?
    mamma mia...

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.