Newsgroup: it.comp.software.database
Titolo: Indici e db

perchè con gli indici si riduce il tempo di accesso delle richieste al db?
Vorrei una spiegazione abbastanza dettagliata ma abbastanza semplice.
Grazie
Piero
--
------------------------------------------------------------------
--------------------------------
Inviato via 
http://usenet.libero.it

...
Perche' la ricerca di un record viene fatta leggendo prima il record a
meta', se questo e' maggiore dell'indice si prosegue la ricerca nella
prima meta' (suddividendo ancora l'intervallo), altrimenti nella
seconda meta'.
In questo modo dopo log2(righe) il puntatore al record viene trovato
(con cui viene fatto l'accesso conclusivo alla tabella)
Greetings,
Alessandro Trebbi
Pesaro, Italy
http://www.b3soft.com


 ha scritto nel messaggio
news:192Z92Z126Z137Y...@usenet.libero.it...

Semplice e dettagliata non stanno mai bene insieme nel mio vocabolario.
Provo con il semplice:
Prendi un manuale.
Come fai a trovare in che pagina si trova il determinato paragrafo del
determinato capitolo?
Hai due strade: o ti leggi pagina per pagina cercando quello che ti
interessa o più semplicemente vai all'indice e ti leggi il numero di pagina.
E' lo stesso principio.
Ciao.
--
Martino
ICQ# 89077094
---
"...ditemi perché, se la mucca fa MU, il merlo non fa ME?..."
Elio e le storie Tese


Considera che il migioramenteo di prestazioni lo hai se utilizzi gli indici
come chiavi di ricerca. Se hai l'unico indice sulla chiave primaria e fai
una ricerca per cognome non otterrai grandi risultati.
Ciao.

 Vorrei una spiegazione abbastanza dettagliata ma abbastanza semplice.
Ciao Piero,
se vuoi sapere qualche cosa di piu' dettagliato, per quanto
riguarda l'implementazione, prova a questo link:
http://epaperpress.com/sortsearch/index.html
(sulla destra apri "Very Large Files", poi "B-Trees"
Oppure fai una ricerca su Google per "B-Trees" oppure
per "B+Trees", sono le implementazioni piu' comuni
(non le uniche).
Ciao,
-- 
Gianluca Hotz
Backoffice MVP (SQL Server) MCP SQL Server and MCP Windows
Vice-President of the Italian User Group for SQL Server
Founding Member of the Italian User Group for .NET
http://www.ghotz.com
http://www.ugiss.org

> perchè con gli indici si riduce il tempo di accesso delle richieste
al db?
chi te l'ha detta sta ca%%ata?
/G

 (con cui viene fatto l'accesso conclusivo alla tabella)
Non č detto che venga usata una ricerca binaria nelle tab. indice ...
SQLServer adotta algoritmi differenti per tipologie diverse di strutture
dati.
Esistono degli algoritmi molto piů prestanti solo che non sempre vale la
pena di applicarli ..
Saluti

 pena di applicarli ..
E quali? 
Mi rimane difficile pensare che si possa andare sotto questa soglia, log2(n).


 Mi rimane difficile pensare che si possa andare sotto questa soglia,
log2(n).
non so se si scriva cosě : shell metzner ...
ce ne sono un po' comunque ... vecchi remasugli scolastici.
di piů non zo ...
saluti

non so se si scriva cosě : shell metzner ...
Si scrive cosi', ma e' un algoritmo di ordinamento, non di ricerca.
Leonardo
-- 
".signature": bad command or file name

 >non so se si scriva cosě : shell metzner ...
Cacchio č vero ...
forse sono troppo lontani i tempi della scuola (o forse dovevo solo studiare
un po' di piů).
Comunque confermo che SQL Server usa algoritmi diversi in base alla
struttura dati.
Devo indagare meglio sugli indici.
Saluti

 Devo indagare meglio sugli indici.
L'indice come gia' fatto notare da altri, non e' sempre utile; per
questo motivo si mette il database in modalita' choose e si generano
le statistiche. Ci sono anche altre considerazioni sulla dimensione
della tabella, sulla disponibilita' di piu' processori, che possono
comunque far si' che il database vada in full scan sulla tabella.
Pero' un indice ben fatto e' senz'altro utile, e quasi mai dannoso
(salvo che si perde un po' di spazio, specie se si indicizzano dei
varchar, e si perde un po' di tempo in piu' in insert e update)
(io di solito faccio il piano di query, forzo la modalita' rule per
identificare se eventuali parti critiche derivano dalla mancanza di un
indice, creo un indice di prova, analizzo la tabella, rifaccio il
piano di query per vedere se a qualche step l'indice viene usato e se
riduce il costo della query, in caso positivo lo matengo se no droppo;
al di la' del costo l'indice puo' essere utile per ridurre gli accessi
al disco che spesso sono la parte che fa perdere piu' tempo)
