Re: Problema su lettura tabella in multiutenza
[ Nouvelle discussion
| Répondre au groupe
|
it.comp.appl.access ]
Sujet: Re: Problema su lettura tabella in multiutenza
De: a...@ay-1asistemi.it (Alessandro Cara)
Groupes: it.comp.appl.access
Date: 28. Aug 2008, 13:02:04
References: 1 2 3
|
Fair87 ha scritto:
> Alessandro Cara ha scritto:
>> Fair87 ha scritto:
>>> Ciao a tutti, una domanda: come si può 'snellire' la sola lettura di una
tabellona su cui devo fare delle ricerche (è un catalogo....) in multiutenza? La
tabella è la base di una form richiamata da codice con una variabile d'ambiente
che passa la stringa SQL e la form è già in sola lettura (snapshot) solo che le
ricerche contemporanee sono mooooolto lente....consigli?
>>>
>> Perdonami ma non e' chiaro.
>> La ricerca su una stazione sola e' veloce?
>> Cos'e' la tabellona? (Volumi)
>> Che ricerche devi fare?
>> La query ha delle "IN"?
>> --
>> ac
> Scusa Alessandro, chiarisco: ho un catalogo in cui fare ricerche, composite
(titolo, autore, editore, anno di pubblicazione....) dove posso ricercare per
iniziale o per contenuto su tutti i campi. La tabella contiene circa 500000
righe, ogni riga circa 30 campi. In una LAN, una ricerca media per contenuto in
campi compositi richiede circa 10 sec, per iniziali circa 2. Se però attivo un
altro client (utilizzo XpUnlimited) anche la ricerca per iniziali (contemporanea
su 2 client) in un campo solo richiede + di 30/35 secondi. La clausola SQL è
senza IN, ed è impostata sulla tabella archivio, + outer join sulle tabelle di
decodifica. Per il filtro metto tutto nell'espressione WHERE, concatenando i
vari campi della form di ricerca. Ovviamente il WHERE può coinvolgere tutte le
tabelle dell'espressione SQL. Spero di aver chiarito un po' le cose....
> Intanto grazie!!
>
come direbbero gli americani "is a real pain in the ass".
A quanto dici ci sono 2 punti particolarmente critici
1) La ricerca su tutti i campi, che immagino non sono tutti indexati
2) Le join
Non ho una soluzione pronta in tasca e credo bisogna cominciare a
definire dove e' il "reale" problema
1)
Sarebbe il caso di mettere su la tabella di "explain", che purtroppo non
mi ricordo esattamente come attivare (forse c'e' qualcosa sul sito di
Baraldi), per capire quali sono le strategie di accesso del DB.
2)
Eliminare le join per capire quale incidenza hanno
3)
Se non presenti, mettere su gli indici per le ricerche piu' frequenti
3)
Se ci sono delle "or" sui criteri verificare se queste portano alla
esclusione della lettura per indici e trovare un "workaround" (i.e. uso
di union). Fermo restando che ricerche per like, mi sembra, portano
nella maggioranza dei casi ad accesso per "tablescan".
4) XPUnlimited e' quella roba che "surroga" il terminal server? Se e'
cosi' diventa un fattore da osservare attentamente poiche' puo' essere
un collo di bottiglia non indifferente
5)
Sarebbe comunque il caso che ci fai vedere lo "skeleton" della query
6)
Se non si riesce a trovare una "terapia" corretta, usare il bisturi e
passare ad un DBMS piu' "DBMS"
--
ac

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|