[SQL] Chiarimento: indici

mercoledì 16 maggio 2012 - 11.53
Tag Elenco Tags  SQL Server 2008 R2

the_driver Profilo | Senior Member

Ciao a tutti,

avrei bisogno di capire una cosa:

- ci sono situazioni in cui gli indici presenti in una tabella non portano vantaggi?
- conviene definire indici sulle colonne presenti in join con altre tabelle ?

esempio


MY_TABELLA
id_my_table INT NOT NULL PRIMARY KEY
id_user INT
id_XXX INT
id_YYY INT
value INT NOT NULL
current_date DATE NOT NULL




Le tre colonne id_user,id_XXX e id_YYY fanno riferimento alle primary key di altre tabelle. In questo caso ha senso indicizzarle in questa tabella?



Grazie



lbenaglia Profilo | Guru

>- ci sono situazioni in cui gli indici presenti in una tabella
>non portano vantaggi?
Certo, se l'optimizer non li utilizza nella creazione del query plan (perché inutili ai fini della query oppure a causa di statistiche non aggiornate o ancora per via di hints) penalizzando le operazioni di modifica dei dati (INSERT, UPDATE o DELETE) per via degli aggiornamenti alle index pages.

>- conviene definire indici sulle colonne presenti in join con
>altre tabelle ?
Sempre dato che verranno sicuramente presi in considerazione dall'optimizer.

>Le tre colonne id_user,id_XXX e id_YYY fanno riferimento alle
>primary key di altre tabelle. In questo caso ha senso indicizzarle
>in questa tabella?
Certo.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5