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

    [VB.NET] MySqlDataAdapter.fill di un datatable lentissimo!!!

    ciao a tutti!
    volevo chiedervi un aiuto perchè ultimamente ho "scoperto" che utilizzando il seguente codice

    codice:
    Dim table As New DataTable()
            Try
                ' The SqlConnection class allows you to communicate
                ' with SQL Server and DataTable.
    
                ' A SqlCommand object is used to execute the SQL commands.
                Dim mycmd As New MySqlCommand(querymysql, conn)
                Dim DataAdapter As New MySqlDataAdapter(mycmd)
                Dim commandBuilder As New MySqlCommandBuilder(DataAdapter)
                ' The SqlDataAdapter is responsible for using
                ' a SqlCommand object to fill a DataSet. 
    
    
                DataAdapter.Fill(table)
    
                ' Set the DataGrid caption, bind it to the DataSet,
                ' and then make it Visible            
    
    
            Catch sqlExc As MySqlException
                MessageBox.Show(sqlExc.ToString, "SQL Exception Error!", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
    datagrid1.datasource = table
    quando eseguo DataAdapter.Fill(table) l'applicazione sembra rallentare inesorabilmente.
    la query mysql è una semplice select di una 30ina di righe.
    Il db risponde in maniera fulminea (anche perchè è in locale).

    avete suggerimenti?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Io comincio a nutrire seri dubbi sull'architettura generale con cui stai lavorando, perché hai denunciato un problema simile anche in una discussione passata, e io fatico a credere che sia normale che tu abbia tutti questi problemi di performance.

    Nel caso in esame, se non dici qual è la query o la configurazione dei componenti coinvolti nel processo, non è possibile darti aiuto.

    Il metodo Fill ottiene i dati e li memorizza nella tabella: se c'è un problema di lentezza, bisogna necessariamente analizzare la query SQL di selezione che viene fatta.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    beh, se nutri seri dubbi tu figurati io XD
    Io sono un niubbo in vb.net, quindi è MOLTO probabile che ci siano delle cagate nel mio codice.

    intanto ti giro la query.
    SELECT col.nome AS Collane, tes.id AS IDtestata, tes.Titolo AS Titolo_Testata, edi.nome AS Editore, rep.nome_reparto AS Reparto, Volumi.ID AS IDvolume, Volumi.Idtestata, Volumi.Titolo AS Titolo_fumetto, Volumi.sottotitolo AS Sottotitolo_Fumetto, Volumi.numero AS Numero, Volumi.prezzo AS Prezzo, Volumi.Esaurito as Esaurito " _
    & "FROM Volumi " _
    & "LEFT JOIN Testate AS tes ON Volumi.IDtestata = tes.id " _
    & "LEFT JOIN Editori AS edi ON tes.ideditore = edi.id " _
    & "LEFT JOIN Collane AS col ON tes.idcollana = col.id " _
    & "LEFT JOIN Reparto AS rep ON tes.idreparto = rep.id LIMIT 0 , 30

    sinceramente non mi sembra niente di che. Ho visto query ben peggiori nei sorgenti di alcuni gestionali aziendali. Quelle si che fanno paura!

  4. #4
    ah, sto utilizzando il connettore mysql scaricato direttamente dal sito ufficiale. Non so se questa info possa aiutare.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da vejita866
    intanto ti giro la query. [...]
    sinceramente non mi sembra niente di che. Ho visto query ben peggiori nei sorgenti di alcuni gestionali aziendali. Quelle si che fanno paura!
    Non è la lunghezza o la complessità di una query che incide sulle prestazioni, quanto la mole di dati che mette assieme per produrre un risultato.

    Nella tua query ci sono parecchie "join": quanti sono i record contenuti nelle tabelle che metti in relazione?

    Prova ad eseguire la stessa query anche in un tool esterno di amministrazione del DB e verifica se in quella sede ottieni gli stessi problemi di prestazioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    i record contenuti negli altri db saranno si e no 2-3 mila. Però fanno tutti riferimento a degli indici.
    Infatti eseguendo la query sul phpmyadmin del mio db, tempo di esecuzione 0,083 secondi.

  7. #7
    nulla?
    secondo voi il codice che ho scritto è corretto?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da vejita866
    nulla?
    secondo voi il codice che ho scritto è corretto?
    Io non ci vedo niente di strano o di particolare. Si tratta di un normale "fill" di un DataSet, il cui peso dipende dall'interrogazione fatta sul database, o sulla velocità del canale di comunicazione; essendo un problema che tu riscontri già in altri contesti, anche diversi e più semplici, mi fa pensare che vi sia qualcosa da qualche parte che influisce, visto che dai tool amministrativi non riscontri problematiche particolari, al netto che ti colleghi dalla stessa macchina ed esegui precisamente la stessa query.

    Ciò detto, non potendo lavorare sulla tua macchina, purtroppo non c'è la possibilità di dare indicazioni più specifiche, se non la garanzia che comunque il problema che riscontri non fa parte di un difetto congenito e sempre presente del framework, perché a me - ad esempio - non è mai capitato.

    Che dire...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    potrebbe essere un "problema" del connettore mysql?
    Scaricato dal sito mysql, ma forse sarebbe il caso di provarne uno diverso?

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.