Newsgroup: it.comp.lang.vo-clipper
Titolo: VO->MYSQL Tempi delle query

Ciao a tutti,
vorrei un'informazione da chi usa mysql: è normale che per caricare in un
listview una tabella di circa 8000 righe e 10 colonne occorrono 60 secondi
esatti?
La query è di quelle semplicissime, ossia select * from tabella, mentre i
dati vengono estrapolati tramite la classe FabMySQL.
Grazie a chi può darmi delucidazioni.
Francesco



COn una select del genere, ponendo ogni colonna con 20 bytes ottieni
1.600.000 bytes da trasferire dal server al client, a parte le
operazioni sul server e sul client per gestire i dati, tutti dipende
dalla velocità della rete, ho anch'io lo stesso problema, lo "risolto"
facendo delle query a "pagina", cioè prendo 100 record alla volta e li
scorro.
Pietro Angelo Cavoli
ENEA
Servizio Informatico Direzione Centro Casaccia
mail : 
cav...@casaccia.enea.it
http://www2.casaccia.enea.it
http://www.italiantartide.it
 

 ha scritto nel messaggio
news:aoAQa.29312$it4.7...@news1.tin.it...


Il problema lamentato non sarà causato dal caricamento le ListView ?
Quando generi un listiview conviene sempre dare le seguenti istruzioni :
    SELF:oDCListview:SuspendUpdate()
    < codice per caricare il listview>
    SELF:oDCListview:RestoreUpdate()
Non è documentato nell'help di VO ma guardandoci bene è un metodo
della classe Control da cui Listview eredita.
In questo modo si velocizza parecchio il caricamento del LV .
Ciao Alessandro


Dimenticavo di dire che lavoro in locale  e non in rete.....

Mi sembrava che fosse un po' troppo. La connessione č tramite tcp/ip, per
non sbagliare, ora faccio una prova direttamente da codice senza inserire i
risulatati da nessuna parte, cosě per vedere che succede.
Io mi trovo bene con i listview, sono molto piů veloci e versatili dei
databrowser, ma proverň anche questi ultimi.
Grazie.
                                        Francesco

Ho implementato "illo tempore" i due metodi nei miei listview e li utilizzo
regolarmente, ora proverò a leggere soltanto  i dati per vedere quanto
impiega la routine.
Grazie.
                                    Francesco

Dunque,
ho eseguito la query direttamente dal prompt di mysql, per evitare
interferenze di codice, ed il risultato è di 39.0 secondi.
La lunghezza del record è di circa 100 byte e lavoro in locale su pentium
3/1000 con 256 mb ram.
Devo dedurre che i tempi siano corretti?
Ciao.
                                                Francesco

 La lunghezza del record č di circa 100 byte e lavoro in locale su pentium



Scusa, mi dici nuovamente (se l'avevi già detta) la query esatta?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Scusa, una domandina, se fai una query, ottieni dei record, che sono
fatti di bytes, 16.111 record per metti 1000 bytes = 16.111.000, cioč
circa 16MB, sbaglio qualcosa?
come fai in rete ad ottenere tempi di risposta cosě brevi?
Se faccio la query direttamente dal pannello di SQLServer qualche
secondo ce lo mette. e SQL Server carica solo quelle da visualizzare.

Pietro Angelo Cavoli


Caro Francesco :
Mi sa che tu abbia qualcosa che non va !!!
Anche io uso i Browser nelle finestre e mi trovo benissimo anche con MySQL.
Una finestra con delle colonne a vista browse, dovrebbe avere meno colonne
possibile, il motivo è ovvio. Quante più colonne ci sono da visualizzare,
più tempo ci mette. Io metto solo quelle strettamente necessarie a far
riconoscere all'utente di che record si tratta. Se poi vuole i dettagli
clicca e va in una finestra dove gli kmostra tutti i dati del record scelto
dal Browse.
Ad esempio con MySQL ho realizzato una applicazione che gestisce tutto
l'hardware presente dell'Ente dove io lavoro. la tabella è di 45.567 record.
 Un record è lungo 1127 caratteri(io uso parecchi campi di tipo
varchar(50)).
Quando scrivo una query da unacasella  di testo posta sulla finsetra del
browser,
conto circa 1 secondo ed
ho il risultato.  Usando MySQL e le librerie che di Danilo Giuliani che mi
fanno evitare ODBC, cambio molto poco del codice che uso per gestire i DBF
ed inoltre ha questa velocità.

 ha scritto nel messaggio
news:3f16262f....@news.caspur.it...


 ha scritto nel messaggio
news:0m5Ra.37383$it4.9...@news1.tin.it...



è la più semplice di questo mondo: SELECT * FROM tabella;
senza nessun filtro e digitata direttamente al prompt di mysql collegato via
tci/ip su computer locale pentium 3/1.000 con 256 mb ram.
La tabella in questione è l'archivio dei comuni, se questo può servire. La
struttura della tabella è fatta solo di campi char + uno di autoincrement.

Ciao Enio,
sitamo facendo un po' di confusione, vediamo di chiarire il tutto.
Lasciamo perdere per un momento VO, poichč utilizziamo approcci diversi a
mySql, io non utilizzo affatto i dbserver e sto implementando mie funzioni
per la gestione.
Se io vado al prompt di mysql, quindi senza nessun tipo di interfaccia
grafica o altro, e digito:
use "miodatabase"
select  * from COMUNI;
ottengo un elenco dei record, circa 8.000, in poco meno di un minuto.
Ora io mi chiedo: č normale?
Essendo solo all'inizio non posso sapere se i tempi di risposta da me
ottenuti sono standard o meno e chiedo quindi un riscontro a voi.
Leggo, perň, pareri discordanti. C'č chi mi dice si e chi mi dice no.
A questo punto, se vogliamo tutti avere un termine di paragone, credo che
sia il caso che eseguiamo la stessa prova nello stesso modo, presupponendo
che tutti abbiamo un archivio comuni uguale o simile.
Spero di essere stato chiaro.
Grazie.
                            Francesco

Scusa Danilo, ma non credo sia una buona idea paragonare l'accesso da
programma, poichč sicuramente tu utilizzi funzioni piů avanzate ed
ottimizzate delle mie, visto che sono solo pochi giorni che smanetto.
Se hai un archivio dei comuni d'Italia, puoi eseguire la query semplice
(select * from comuni) dal prompt di mysql? Cosě abbiamo un termine vero di
paragone, almeno approssimato.
Grazie.
                        Francesco

 Leggo, però, pareri discordanti. C'è chi mi dice si e chi mi dice no.


Per evitare, appunto, paragoni di codice, ho modificato la domanda
effettuando la query dal prompt di mysql, in cui i miei tempi di risposta
sono di quasi un minuto per 8.000 record circa.
Credo che la cosa più logica sia usare questo come termine di paragone!
Per quanto riguarda il codice, sto solo provando i tempi delle funzioni che
sto scrivendo per vedere come utilizzarle al meglio, ma niente di definito,
quindi ti ringrazio molto per le dritte!
Sono ovviamente d'accordo con te che se condividessimo le risorse eviteremmo
di rifare lavoro e test che altri hanno già fatto, ma sono anche del parere
che ognuno ha il sacrosanto diritto di essere geloso delle proprie funzioni
che, molto spesso, gli sono costate molta fatica. Per questo chiedo solo
consigli e termini di paragone e non codice sorgente, considerato anche che
ho la presunzione di poterlo scrivere da me. :-))
Devo dire che per adesso mysql mi piace, ma non lo vedo adatto a piccoli
progetti, che riesco a gestire molto meglio con i dbf, mentre credo che lo
utilizzerò senz'altro per delle grosse applicazioni che attualmente ho in
giro in dbf.
Grazie di tutto.
                                                Francesco

 ha scritto nel messaggio
news:P19Ra.38347$it4.1...@news1.tin.it...


 struttura della tabella è fatta solo di campi char + uno di autoincrement.
In effetti un minuto mi sembra un po' eccessivo...


 ha scritto nel messaggio
news:vJ7Ra.37761$it4.9...@news1.tin.it...


Ho provato anch'io con 8074 records sull'archivio CAP, in rete locale 
100 Mb/sec da un client, utilizzando il software MySql-Front, 
visualizzando tutto, circa un secondo.
Antonio


 ha scritto nel messaggio
news:P19Ra.38347$it4.1...@news1.tin.it...



Ok, anche io con MySql-Front ottengo lo stesso risultato, quanto meno
abbiamo stabilito un paragone.
Grazie.
                                            Francesco

 ha scritto nel messaggio
news:wyrRa.43734$it4.1...@news1.tin.it...

MySqlFront utilizza l'accesso diretto al motore, la stessa tecnica che
abbiamo utilizzato noi nella nostra soluzione.
Se non hai altri problemi questa è la dimostrazione della lentezza di ODBC
unita ad una pessima implementazione delle classi SQLxxxxx di VO.
Se sarete a Milano il 3 ottobre ne potremo parlare diffusamente.


 
sup...@softdevo.com
Io sto utilizzando la classe FabMySql per l'accesso e non quella di Vo,
stando a quanto mi dicono dovrebbe essere del tipo tcp/ip.............almeno
credo.
Io spero proprio di esserci stavolta!
    Grazie.
                                    Francesco

 ha scritto nel messaggio
news:3dsRa.43858$it4.1...@news1.tin.it...


 Se non hai altri problemi questa č la dimostrazione della lentezza di ODBC



In effetti uso la 4.0.13 di mysql.
Della FAB uso solo la connessione e nessun'altra funzione. Dopo la
connessione uso solo funzioni che inviano le varie query scritte da me.
Grazie.
                                                    Francesco

 ha scritto nel messaggio
news:bf6bct$as6uk$1...@ID-83982.news.uni-berlin.de...


 > > Se non hai altri problemi questa è la dimostrazione della lentezza di
