Visualizzazione dei risultati da 1 a 7 su 7

Discussione: addnew vs insert to

  1. #1

    addnew vs insert to

    §Caio Ragazzi,
    chiedo a voi divoratori di sql....dalmio piccolo ho sempre saputohe l'istruziione insert to è molto più performante di addnew.

    Ho realizzato del codice per importare un file txt in un db access, utilizzando inser to ci metto 30 s,mentre con addnew 3 s la cosa mi risulta strana.
    Sono abituato a non usare mai addnew visto che non è sql puro e non è compatibile con altri db.

    vi posto il codice...grazie per l'aiuto...

    addnew
    Codice PHP:

    <% 


        
    sTableDb "catastosog"



    Dim strCampi1sTableDb
                set rsC 
    Server.CreateObject("ADODB.Recordset"' estraggo i campi
                
                Set RsC = Conn.OpenSchema(4, Array(Empty, Empty, "" & sTableDb ))
                do while not rsC.eof

                    strCampiDB=strCampiDB &rsC("COLUMN_NAME") &";" ' 
    metto i campi in un array con lo spazio per split
                    aa
    =aa+1
                    
    'response.Write aa-1&"."&rsC("COLUMN_NAME") &"
    "

                    rsC.moveNext
                loop
                rsC.Close
                Set rsC = Nothing
                Dim arr_strCampiDB_max,arr_strCampi_minDB,arr_strCampiDB
                arr_strCampiDB = split_stringa1(strCampiDB)
                arr_strCampiDB_min = lBound(arr_strCampiDB)
                arr_strCampiDB_max = uBound(arr_strCampiDB)
                '
    response.End()
                %>
        
    <
    table width="53%" border="0" align="center">
      
      <
    tr>
        <
    td height="21" align="left" class="titolocol">SOGGETTI</td>
      </
    tr>
      <
    tr>
        <
    td width="96%" height="20" align="left" class="titolotab">Step 1 to 3 tabella <%= sTableDb %> svuotata</td>
        <
    td width="4%" align="left"></td>
      </
    tr>
    </
    table>
    <% 
    response.Flush() %>
    <%  
    sQuery "DELETE * FROM " sTableDb
        conn
    .Execute(sQuery)
        
        
    Set fso CreateObject("Scripting.FileSystemObject")
        
    Set txt fso.OpenTextFile(sPath &"\"& filesog)
      Set rss=server.CreateObject("
    ADODB.Recordset")
      rss.Open sTableDb,conn,3,3
        
             
          With txt
           While not .AtEndOfStream
           r = r+1
             aCampo = Split(txt.ReadLine(),"
    |")

        
         rss.Addnew()     
        

    if aCampo(3)="
    P" then
    rss(arr_strCampiDB(0))=aCampo(0)
    rss(arr_strCampiDB(1))=aCampo(9)
    rss(arr_strCampiDB(2))=aCampo(4)
    rss(arr_strCampiDB(3))=aCampo(8)
    rss(arr_strCampiDB(4))=aCampo(4)&" "&aCampo(5)
    rss(arr_strCampiDB(6))=aCampo(2)
    rss(arr_strCampiDB(7))=aCampo(8)
    rss(arr_strCampiDB(8))=aCampo(5)
    rss(arr_strCampiDB(9))=aCampo(6)
    rss(arr_strCampiDB(10))=aCampo(1)
    rss(arr_strCampiDB(11))=aCampo(3)
    else
    rss(arr_strCampiDB(0))=aCampo(0)
    rss(arr_strCampiDB(1))=aCampo(6)
    rss(arr_strCampiDB(4))=aCampo(4)
    rss(arr_strCampiDB(11))=aCampo(3)
    rss(arr_strCampiDB(6))=aCampo(2)
    rss(arr_strCampiDB(7))=aCampo(5)
    end if
        rss.Update()
        

        'response.End()
        
         
          

               Wend
           
        End With
        rss.close()
        Set txt = Nothing
        Set fso = Nothing
        
        response.End()
    %> 

    insert to

    Codice PHP:

    <%  
        
        
    Set fso CreateObject("Scripting.FileSystemObject")
        
    Set txt fso.OpenTextFile(sPath &"\"& filesog)

        
        Set cmd = CreateObject("
    ADODB.Command")
        With cmd
           .CommandText = "
    PARAMETERS pC1 TextpC2 TextpC3 TextpC4 TextpC5 TextpC6 TextpC7 TextpC8 TextpC9 TextpC10 TextpC11 TextINSERT INTO  "& sTableDb &" (codice_amministrativosezioneidentificativo_immobiletipo_persona cognomenome sessodata_di_nascita luogo_di_nascita codice_fiscale generalitaVALUES(pC1pC2pC3pC4pC5pC6pC7pC8pC9pC10pC11)"
           .CommandType = 1
           Set .ActiveConnection = conn
           .Parameters.Refresh
        End With

        r = 0
        With txt
           While not .AtEndOfStream
              r = r+1
              aCampo = Split(txt.ReadLine(),"
    |")
              With cmd
                  if aCampo(3)="
    P" then 
                     .Parameters("
    pC1").Value = aCampo(0)
                     .Parameters("
    pC2").Value = aCampo(1)
                     .Parameters("
    pC3").Value = aCampo(2)
                     .Parameters("
    pC4").Value = aCampo(3)
                     .Parameters("
    pC5").Value = aCampo(4)
                     .Parameters("
    pC6").Value = aCampo(5)
                     .Parameters("
    pC7").Value = aCampo(6)
                     .Parameters("
    pC8").Value = aCampo(7)
                     .Parameters("
    pC9").Value = aCampo(8)
                     .Parameters("
    pC10").Value = aCampo(9)
                     .Parameters("
    pC11").Value = aCampo(4)&" "&aCampo(5)
                 elseif aCampo(3)="
    G" then 
                     .Parameters("
    pC1").Value = aCampo(0)
                     .Parameters("
    pC2").Value = aCampo(1)
                     .Parameters("
    pC3").Value = aCampo(2)
                     .Parameters("
    pC4").Value = aCampo(3)
                     .Parameters("
    pC11").Value = aCampo(4)
                     .Parameters("
    pC8").Value = aCampo(5)
                     .Parameters("
    pC7").Value = ""
                     .Parameters("
    pC5").Value = ""
                     .Parameters("
    pC6").Value = ""
                     .Parameters("
    pC9").Value = ""
                     .Parameters("
    pC10").Value = aCampo(6)
                 end if
                 .Execute

                 
              End With
               Wend
           .Close
        End With
        
        Set txt = Nothing
        Set fso = Nothing
        
        Set cmd = Nothing
          %> 
    http://www.raffygio.com

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,134
    Potrebbe essere + lento perché apri il recodset, io di solito uso INSERT INTO in execute da quello che so e il metodo + veloce.

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Si apro il record set solo all'inizio poi ciclo e infine chiudo per poter settare i vari parametri sui campi....perdera pochi millisec...cmq anche usando direttamente execute è lento....ho ripulito il tutto per avere grossomodo lo stesso codice solo con variante addnew - insert to e confrontando :

    insert to 13 sec
    Codice PHP:
    <%  sQuery "DELETE * FROM " sTableDb
        conn
    .Execute(sQuery)
        
        
    Set fso CreateObject("Scripting.FileSystemObject")
        
    Set txt fso.OpenTextFile(sPath &"\"& filesog)
     ' Set rss=server.CreateObject("
    ADODB.Recordset")
     ' rss.Open sTableDb,conn,3,3
        
             
          With txt
           While not .AtEndOfStream
           r = r+1
             aCampo = Split(txt.ReadLine(),"
    |")
             if aCampo(3)="
    P" then

                            sql = "
    INSERT INTO "&sTableDb&" ([codice_amministrativo],[codice_fiscale], [cognome], [data_di_nascita], [generalita],[identificativo_immobile], [luogo_di_nascita], [nome],"& _
                    " 
    [sesso], [sezione], [tipo_persona]) "& _
                    " 
    VALUES('"&aCampo(0)&"','"&aCampo(9)&"','"&aCampo(4)&"''"&aCampo(8)&"''"&aCampo(4)&" "&aCampo(5)&"','"&aCampo(2)&"'"& _
                     "'"&aCampo(8)&"'
    ,'"&aCampo(5)&"','"&aCampo(6)&"','"&aCampo(1)&"','"&aCampo(3)&"')"
                     else
                     
                     sql = "
    INSERT INTO "&sTableDb&" ([codice_amministrativo],[codice_fiscale], [generalita],[identificativo_immobile], [luogo_di_nascita], "& _
                    "  
    [tipo_persona]) "& _
                    " 
    VALUES('"&aCampo(0)&"','"&aCampo(6)&"','"&aCampo(4)&"''"&aCampo(3)&"''"&aCampo(2)&"''"&aCampo(5)&"')"
                     
                     end if
                    
                    conn.execute sql

        
         
          

               Wend
           
        End With

        Set txt = Nothing
        Set fso = Nothing
        
        Set cmd = Nothing

    %> 


    addnew 2,7 sec

    Codice PHP:
    <%  sQuery "DELETE * FROM " sTableDb 
        conn
    .Execute(sQuery
         
        
    Set fso CreateObject("Scripting.FileSystemObject"
        
    Set txt fso.OpenTextFile(sPath &"\"& filesog) 
      Set rss=server.CreateObject("
    ADODB.Recordset") 
      rss.Open sTableDb,conn,3,3 
         
              
          With txt 
           While not .AtEndOfStream 
           r = r+1 
             aCampo = Split(txt.ReadLine(),"
    |") 

         
         rss.Addnew()      
         

    if aCampo(3)="
    P" then 
    rss(arr_strCampiDB(0))=aCampo(0) 
    rss(arr_strCampiDB(1))=aCampo(9) 
    rss(arr_strCampiDB(2))=aCampo(4) 
    rss(arr_strCampiDB(3))=aCampo(8) 
    rss(arr_strCampiDB(4))=aCampo(4)&" "&aCampo(5) 
    rss(arr_strCampiDB(6))=aCampo(2) 
    rss(arr_strCampiDB(7))=aCampo(8) 
    rss(arr_strCampiDB(8))=aCampo(5) 
    rss(arr_strCampiDB(9))=aCampo(6) 
    rss(arr_strCampiDB(10))=aCampo(1) 
    rss(arr_strCampiDB(11))=aCampo(3) 
    else 
    rss(arr_strCampiDB(0))=aCampo(0) 
    rss(arr_strCampiDB(1))=aCampo(6) 
    rss(arr_strCampiDB(4))=aCampo(4) 
    rss(arr_strCampiDB(11))=aCampo(3) 
    rss(arr_strCampiDB(6))=aCampo(2) 
    rss(arr_strCampiDB(7))=aCampo(5) 
    end if 
        rss.Update() 
         

        'response.End() 
         
         
           

               Wend 
            
        End With 
        rss.close() 
        Set txt = Nothing 
        Set fso = Nothing 
     
    %> 
    Che ne dite?
    http://www.raffygio.com

  4. #4
    ma di che database parliamo?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,134
    @Santino83_02
    di access (vedi 1 post)

    @gguida
    Sul libro di asp che ho asserisce che è meglio utilizzare INSERT INTRO perché è il + veloce.
    A memoria qui sul forum si sembra (non sono sicuro) d'aver letto che addnew è specifico per access forse essendo dedicato sfrutta al meglio le sue "performance"/"potenzialità".
    Poi perdonami ma se hai fatto tutte le prove del caso (auspico anche online non solo in locale), riscontrando la maggiore velocità di addnew che problema c'è usa quello metodo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    infatti ho sempre utilizzato insert considerato molto più veloce....il problema è che sto reaLIzzando un applicazione web base dove girano diversi dbase, inizialmente sto usando access in una sorta di beta in quanto alcuni db già sono in questo formato e non posso cambiarli.
    Successivamente passero tutto in mysql o sql e quindi volevo conservare la compatibilità del codice sql cosa non possibile con addnew.

    Grazie cmq...la differenza è abbissale visto che devo importare circa 10 file txt da 10.000 record ciascuno disposti su circa 20 colonne.
    http://www.raffygio.com

  7. #7
    se il tuo problema sono le performance, non usare né asp né access. con m$sql, ad esempio, puoi importare file di testo rapidamente usando i servizi interni di importazione

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.