Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Esecuzione query molto lenta via ODBC

    Ciao a tutti,

    ho un problema con l'esecuzione di una query su un archivio letto via ODBC e vorrei un vostro parere.

    Dunque, il ponte ODBC mi permette di leggere i record direttamente da archivi Cobol grazie al driver RM Relativity.

    Ho creato una parte di codice VB che consente di eseguire delle query su tali archivi...la struttura è la seguente:

    codice:
    cn = New OdbcConnection(STRINGADICONNESSIONE)
    cn.ConnectionTimeout = 50
    cm = New OdbcCommand(QUERY, cn)
    cn.Open()
    rd = cm.ExecuteReader(CommandBehavior.CloseConnection)
    
    If rd.HasRows Then
          Do While rd.Read
                'Operazioni
          Loop
    End If
    Nella stringa di connessione è specificato il DNS, User e Password. Le prestazioni di lettura variano a seconda del tipo di QUERY che lancio.

    se ad esempio eseguo una semplicissima query del tipo

    SELECT * FROM Archivio1 ORDER BY Codice2

    ho dei tempi di risposta abbastanza veloci, ma se imposto una query un pò più sofisticata del tipo

    SELECT * FROM Archivio1 WHERE Codice1 IN (SELECT Codice FROM Archivio2 WHERE (Tipo=0 AND Valido NOT LIKE '0%')) ORDER BY Codice2

    allora i tempi di risposta diventano indecenti e prima che l'esecuzione termini passano circa 5 minuti.

    Va detto che l'Archivio1 contiene circa 7000 record mentre l'Archivio2 circa 6000. Secondo voi questi ordini di grandezza sono tali da giustificare dei tempi risposta così lunghi? E come potrei fare per ridurli?

    Grazie per ogni informazione.
    Luca >> http://www.pollosky.it

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    non credo.. credo piùttosto che sia un problema di driver o di archivio..

    per esempio su sqlserver una query del genere con 35000 record impiega un minuto circa

  3. #3
    Ho risolto strutturando la query in modo più efficiente...in questo modo:

    SELECT * FROM Archivio1 WHERE EXISTS (SELECT Codice FROM Archivio2 WHERE (Tipo=0 AND Valido NOT LIKE '0%' AND Codice=Archivio1.Codice1)) ORDER BY Codice2
    Luca >> http://www.pollosky.it

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.