AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Tempi di esecuzione query.
Goto page 1, 2  Next
 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Scorpio
Guest





PostPosted: Mon May 30, 2005 8:55 am    Post subject: Tempi di esecuzione query. Reply with quote



Salve a tutti,

avrei una domanda da porvi...

Ho scritto alcune classi Java che eseguono query su un certo numero di
tabelle, al fine di fornire ad un utente un sistema di ricerca di coppie
codice-descrizione. Il caso d'uso tipico prevede che l'utente inserisca una
porzione della descrizione e che il sottosistema ritorni, paginandoli, un
elenco di codici la cui descrizione corrisponde al criterio desiderato.

Il mio dubbio riguarda la velocità di esecuzione, perchè i tempi di risposta
non mi soddisfano. La tabella contiene oltre mezzo milione di record, e
ciascun record è composto da oltre 100 colonne. Ovviamente, nella query di
ricerca, seleziono solo quelle che mi interessano. Vorrei sapere da chi ha
avuto a che fare con tabelle di queste dimensioni quali possono essere dei
tempi di risposta "ragionevoli", considerando che la ricerca avviene via
web.

Grazie in anticipo a tutti,

Scorpio.



Back to top
Francesco Galli
Guest





PostPosted: Mon May 30, 2005 9:03 am    Post subject: Re: Tempi di esecuzione query. Reply with quote



Il tempo "ragionevole" dipende molto dall'utente. Se e' un applicativo che
viene utilizzato "alla desktop", quindi un vero e proprio applicatiov web
utilizzato in LAN piuttosto che via web allora ti direi che due-tre secondi,
tra la submit e la presentazione dei risultati, sono il tempo "limite" che
la mia esperienza mi suggerisce. E soprattutto il tempo limite prima che
l'utente *riclicchi* il fottuto pulsantino :)

Ci dovrebbero essere degli studi in proposito, comunque.

--
---
Francesco Galli / Cinghiale Mannaro
Personal: http://cinghialemannaro.splinder.com
TMS project: http://tms.inera.it


Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 9:25 am    Post subject: Re: Tempi di esecuzione query. Reply with quote




"Francesco Galli" <cinghialemannaroinenglish (AT) interfree (DOT) it> ha scritto nel
messaggio news:429ad6d8$1_1 (AT) x-privat (DOT) org...
Quote:
Il tempo "ragionevole" dipende molto dall'utente. Se e' un applicativo che
viene utilizzato "alla desktop", quindi un vero e proprio applicatiov web
utilizzato in LAN piuttosto che via web allora ti direi che due-tre
secondi,
tra la submit e la presentazione dei risultati, sono il tempo "limite" che
la mia esperienza mi suggerisce.

Ti ringrazio per la risposta. Il fatto è che, per alcune tipologie di
ricerca, il tempo di risposta è intorno ai 20 secondi. Il che è davvero
tanto,
ma purtroppo non ho la più pallida idea di come si possa ulteriormente
ottimizzare una query del tipo "select codice, descrizione from tabella
where
descrizione like %_parametro_%" limitandosi, peraltro, a caricare i primi
100 record....

Intanto, grazie per la risposta !

Scorpio.







Back to top
Francesco Galli
Guest





PostPosted: Mon May 30, 2005 9:31 am    Post subject: Re: Tempi di esecuzione query. Reply with quote

Prova su it.comp.software.database... comunque dipende molto dal tipo del
campo su cui fai la query, sul db utilizzato e sul driver jdbc (dipende da
come tratta la sintassi di limitazione).

Prova a fare dei test provando diversi driver. 20 secondo sono francamente
ecceessivi, nessun utente te li accettera'.

Posta qualcosa in piu', magari...
--
---
Francesco Galli / Cinghiale Mannaro
Personal: http://cinghialemannaro.splinder.com
TMS project: http://tms.inera.it


Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 9:47 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"Francesco Galli" <cinghialemannaroinenglish (AT) interfree (DOT) it> ha scritto nel
messaggio news:429add83_1 (AT) x-privat (DOT) org...
Quote:
Prova su it.comp.software.database... comunque dipende molto dal tipo del
campo su cui fai la query, sul db utilizzato e sul driver jdbc (dipende da
come tratta la sintassi di limitazione).
Prova a fare dei test provando diversi driver. 20 secondo sono francamente
ecceessivi, nessun utente te li accettera'.

E' in effetti quello che temo.. ti ringrazio per le dritte...
Purtroppo c'è ben poco da postare: a livello di codice, non si fa altro che
eseguire uno preparedStatement con una select secca. Niente arzigogoli nè
giri strani....

Grazie ancora!
Scorpio.



Back to top
Francesco Galli
Guest





PostPosted: Mon May 30, 2005 9:49 am    Post subject: Re: Tempi di esecuzione query. Reply with quote

Che DB stai usando, e quale sintassi di limitazione? La stessa query,
eseguita dal client, ci impiega lo stesso tempo?

--
---
Francesco Galli / Cinghiale Mannaro
Personal: http://cinghialemannaro.splinder.com
TMS project: http://tms.inera.it


Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 10:01 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"Francesco Galli" <cinghialemannaroinenglish (AT) interfree (DOT) it> ha scritto nel
messaggio news:429ae1ab_2 (AT) x-privat (DOT) org...
Quote:
Che DB stai usando, e quale sintassi di limitazione? La stessa query,
eseguita dal client, ci impiega lo stesso tempo?

Si tratta del DB2 nativo su AS400. Se uso il client a riga di comando, i
tempi sono addirittura peggiori, a meno che non utilizzi l'interprete SQL
nativo.
Quest'ultimo, però, può fare una cosa che in SQL non si può fare: ossia,
tiene probabilmente traccia di un puntatore diretto alla struttura interna
del DB2 / 400. Ciò spiegherebbe la velocità di esecuzione del client
"tradizionale".

Ora, la query è semplicemente quella che ho postato: "SELECT
CODICE,DESCRIZIONE FROM TABELLA WHERE DESCRIZIONE LIKE %parametro% FETCH
FIRST 200 ROWS ONLY", dove parametro è passato dall'utente.

La fetch limita il resultSet ad un numero prefissato di tuple. Per
"paginare" i risultati, tengo traccia della pagina corrente, e mi "sposto"
all'interno del resultset utilizzando il metodo absolute(). In effetti le
paginazioni successive sono velocissime (qualche decimo), pur dovendo
rieseguire ogni volta la query (anticipo una tua logica replica: potrei
anche cachare il resultset, ma mi è stato vietato)... è la prima esecuzione
che mi uccide.

Grazie,
Scorpio.




Back to top
alberto
Guest





PostPosted: Mon May 30, 2005 10:06 am    Post subject: Re: Tempi di esecuzione query. Reply with quote

Quote:

Ti ringrazio per la risposta. Il fatto è che, per alcune tipologie di
ricerca, il tempo di risposta è intorno ai 20 secondi. Il che è davvero
tanto,
ma purtroppo non ho la più pallida idea di come si possa ulteriormente
ottimizzare una query del tipo "select codice, descrizione from tabella
where
descrizione like %_parametro_%" limitandosi, peraltro, a caricare i primi
100 record....


Se non trovi una buona soluzione anche provando altri db o driver, credo che
tu debba passare a un motore di ricerca come Lucene e integrarlo nella tua
applicazione.



Back to top
Francesco Galli
Guest





PostPosted: Mon May 30, 2005 10:33 am    Post subject: Re: Tempi di esecuzione query. Reply with quote

hai notato la clausola?

LIKE '%parametro%'.

Hai voglia di indicizzarlo... cosa fai, indicizzi un varchar? :-)

--
---
Francesco Galli / Cinghiale Mannaro
Personal: http://cinghialemannaro.splinder.com
TMS project: http://tms.inera.it


Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 10:35 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


<stefanomnn (AT) yahoo (DOT) it> ha scritto nel messaggio
news:1117449041.600040.132620 (AT) g43g2000cwa (DOT) googlegroups.com...
ma il campo di ricerca è indicizzato?

Sì. Le query vengono eseguite su una vista fisica.
Scorpio.


Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 10:39 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"Francesco Galli" <cinghialemannaroinenglish (AT) interfree (DOT) it> ha scritto nel
messaggio news:429aec12_2 (AT) x-privat (DOT) org...
Quote:
hai notato la clausola?

LIKE '%parametro%'.

Hai voglia di indicizzarlo... cosa fai, indicizzi un varchar? Smile

Ad essere precisi la vista fisica è ordinata per campo descrizione. Anche
se, ovviamente, non è la stessa cosa.
Scorpio.



Back to top
Vincent Vega
Guest





PostPosted: Mon May 30, 2005 11:18 am    Post subject: Re: Tempi di esecuzione query. Reply with quote

Scorpio wrote:

Quote:
Ti ringrazio per la risposta. Il fatto è che, per alcune tipologie di
ricerca, il tempo di risposta è intorno ai 20 secondi. Il che è davvero
tanto,
ma purtroppo non ho la più pallida idea di come si possa ulteriormente
ottimizzare una query del tipo "select codice, descrizione from tabella
where
descrizione like %_parametro_%" limitandosi, peraltro, a caricare i primi
100 record....

In condizioni normali, quella restrizione costringe il database a
spazzolarsi tutta la tabella per essere verificata. Non c'è molto da
ottimizzare, se non attivando una particolare feature (se disponibile
per il tuo database) per le ricerche testuali.



Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 11:34 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"Vincent Vega" <vincent-vega (AT) despammed (DOT) com> ha scritto nel messaggio
news:d7et0h$t69$1 (AT) area (DOT) cu.mi.it...
Quote:
Scorpio wrote:

In condizioni normali, quella restrizione costringe il database a
spazzolarsi tutta la tabella per essere verificata. Non c'è molto da
ottimizzare, se non attivando una particolare feature (se disponibile
per il tuo database) per le ricerche testuali.

Quindi, mi stai dicendo che la lentezza è "congenita", ed in casi come
questi è "colpa" del database ?
Scorpio.



Back to top
alberto
Guest





PostPosted: Mon May 30, 2005 11:38 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"Scorpio" <_scorpio_NO_SPAM_ (AT) libero (DOT) it> ha scritto nel messaggio
news:429af9e1_1 (AT) x-privat (DOT) org...
Quote:

"Vincent Vega" <vincent-vega (AT) despammed (DOT) com> ha scritto nel messaggio
news:d7et0h$t69$1 (AT) area (DOT) cu.mi.it...
Scorpio wrote:

In condizioni normali, quella restrizione costringe il database a
spazzolarsi tutta la tabella per essere verificata. Non c'è molto da
ottimizzare, se non attivando una particolare feature (se disponibile
per il tuo database) per le ricerche testuali.

Quindi, mi stai dicendo che la lentezza è "congenita", ed in casi come
questi è "colpa" del database ?
Scorpio.



ti sta dicendo che i motori di ricerca non si fanno con i LIKE, nemmeno dal
punto di vista prestazionale.



Back to top
Scorpio
Guest





PostPosted: Mon May 30, 2005 11:42 am    Post subject: Re: Tempi di esecuzione query. Reply with quote


"alberto" <sdfs (AT) tiscali (DOT) it> ha scritto nel messaggio
news:429afb3b$0$15897$5fc30a8 (AT) news (DOT) tiscali.it...
Quote:

ti sta dicendo che i motori di ricerca non si fanno con i LIKE, nemmeno
dal
punto di vista prestazionale.

Ok, alternative ?



Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.