Newsgroup: it.comp.software.database
Titolo: indici

Salve a tutti,
mettiamo il caso di avere un campo:
COGNOME di lunghezza 25 caratteri
se io creo un'indice a 5 caratteri
l'indice funziona lo stesso quando faccio dei
select sul COGNOME?
grazie!
ringo


l'indice non viene usato per una select ma per una where (sottile 
differenza).
se l'indice è su substr(campo,1,5), viene usato solo se la where è su 
substr(campo,1,5) e non se fai la where su tutto il cognome.
il parser dovrebbe essere estremamente complicato per accorgersi di 
poter usare comunque l'indice per una parte di where, non penso che ci 
siano parsers che facciano questo mestiere.
in sostanza, l'indice indicizza quello che gli dici di indicizzare e non 
varianti (neanche sottili).
smentite?
-- 
punkarruso

 smentite?
giustissimo. almeno per oracle.

 smentite?
corretto su mssql
-- 
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

 giustissimo. almeno per oracle.
Questo ng e' una miniera di informazioni, grazie mille a tutti.
Restando su Oracle, se creo un indice su piu' campi nella where devo
necessriamante utilizzare  i campi nel medesimo ordine in cui sono
nell'indice?
--
Luana
UIN 17403231 (Solaris)
http://members.tripod.com/LuanaC
"Un sol modo t'e' concesso per evitare
l'infezione del mondo. non farne parte."
(John Donne )

 nell'indice?
se vuoi che venga utilizzato l'indice, assolutamente si.

> se vuoi che venga utilizzato l'indice, assolutamente si.
Tranne il caso che tu fai una where col1=xxx and col2=xxx and col3=xxx
e hai un unico indice sul col1...
In quel caso oracle puo' usare l'indice sul primo campo indicato nella
where.
Paulus
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:_FKIa.218411$g92.4...@news2.tin.it...

L'ordine dei campi della where generalmente non è influente (a parte gli
hints)
Però i campi della where devono essere i primi e consecutivi dell'indice:
ad es.: se l'indice è su c1, c2, c3, verrà utilizzato l'indice se nella
where sono presenti;
-c1
-c1,c2
-c1,c2,c3
NON verrà utilizzato l'indice in questi altri casi
-c2
-c3
-c2,c3
Nella scelta dei campi dell'indice, mettere primi i campi + utilizzati a
parità di utilizzo,quelli + selettivi

 > siano parsers che facciano questo mestiere.
Questo e' un caso abbastanza particolare...
l'indice su substr() viene utilizzato con un where campo= facendo un
index range, in effetti per un campo varchar molto lungo e' buona
norma indicizzarne solo una parte (questo perche' l'indice non
ottimizza lo spazio ed occupa sempre la dimensione massima)
Greetings,
Alessandro Trebbi
Pesaro, Italy
http://www.b3soft.com

 parità di utilizzo,quelli + selettivi
Thx.
Ho ancora un paio di domande.
Supponiamo che debba fare una select di campi in TABELLA_A e TABELLA_B (piu'
altre tabelle). Entrambe hanno la primary key costituita da piu' campi,
alcuni dei quali comuni (per TABELLA_A sono c1, c2, c3, c4 ... cM, per
TABELLA_B  c3, c1, c2, c4... cM, cN).
Domanda 1: l'ordine in cui i campi sono indicati nella select influenza le
prestazioni? (da qualche test che ho effettuato, parrebbe di si)
Domanda 2: le prestazioni sono influenzate dal fatto che i campi comuni
delle due PK non sono nello stesso ordine? se si, qual'e' il criterio da
seguire per ottenere le prestazioni migliori?


 seguire per ottenere le prestazioni migliori?
l'ordine dei campi nella select non influenza le prestazioni,
che prova hai fatto per dimostrarlo?


 che prova hai fatto per dimostrarlo?
Banalissimamente ho confrontato i tempi di esecuzione di select con i campi
ordinati diversamente.
