On Thursday, July 14, 2016 at 5:14:32 PM UTC+2, Daniele wrote:
> Il db in uso e' firebird 2.5
OK. Purtroppo non conosco a sufficienza fb per darti delle
soluzioni alternative specifiche per quel db.
> > Il problema e' probabilmente il LIKE '%sco%' che in tutti i DB
> > che conosco (pochi) forza un table scan di tutti i dati perche
> > non puo usare indici.
> Il fatto e' che non so come trovare se i dati salvati in Tabella1 (e' la
> tabella dove presumibilmente vengono salvati i documenti in uscita)
> contengono o meno una certa stringa.
> In alcune fatture emesse viene applicato uno sconto, lo sconto (e il perche'
> e' stato applicato) viene salvato nel campo commento (anche un po limitato),
> dove sta il problema?
> Il problema e' di come viene compilato il commento, c'e' chi scrive "sconto
> del 5% ....2", chi scrive "scont. 5", insomma non c'e' una direttiva
> univoca.
Si si, chiarissimo, e' un problema che prima o poi capita a
tutti di dover affrontare :-)
Il problema e' come ti accennavo che i DB in genere NON gestiscono
bene questa condizione (il like '%xyz%' fa disastri)
e a meno che fb non abbia qualche modo particolare per gestire
questa problematica in modo efficiente sei fregato... :-(
Anche perche' il problema e' chiaramente su fb. Il fatto
che e' lento anche usando DBeaver dovrebbe darti un indizio.
Secondo me devi lavorare sulla base dati. Ci sono degli indici
sulle tabelle? Sul campo GIORNO e sui campi chiave?
> > Hai provato a vedere se cambia qualcosa togliendo la clausola
> > su COMMENTO e filtrando i dati da client Delphi?
> No, pero' se la nota di sconto applicato e' salvato nel campo COMMENTO, non
> ho molte altre opzioni !
> Pero' se ci sono altre opzioni ...
No, infatti non ne vedo molte altre. E non so nemmeno se filtrare
i dati da client (usando Filter o OnFilterRecord sui dataset)
sia una soluzione davvero efficace, in teoria dovrebbe essere
piu' veloce il server a fare questo filtro, piuttosto
che spostare attraverso la rete tutti i dati e poi filtrarli
sul client, ma io lo farei un esperimento, non si sa mai! :-D
ciao
Giacomo