Vlocizzare ricerca tramite query select

lunedì 17 marzo 2008 - 10.24

trinity Profilo | Guru

Salve,
domanda banale, per velocizzare la ricerca tramite Select sql in tabella di sql che contengono tantissimi record il metodo migliore è indicizzare la tabella ossia mettere per esempio sotto chiave primaria o anche quavi secondarie i campi che verranno utilizzati poi nella ...Where...della select?

Oppure c'è un altro metodo + veloce ed efficace?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>domanda banale, per velocizzare la ricerca tramite Select sql
>in tabella di sql che contengono tantissimi record il metodo
>migliore è indicizzare la tabella ossia mettere per esempio sotto
>chiave primaria o anche quavi secondarie i campi che verranno
>utilizzati poi nella ...Where...della select?

Ciao Fabio,

gli indici servono appunto per velocizzare gli accessi ai dati.
Una Primary Key non è un indice ma un constraint che garantisce l'univocità delle colonne utilizzate nella sua definizione per tutte le righe della tabella/vista.
Fisicamente viene implementato tramite un indice unique, ma indici e constraints sono concetti completamente differenti.

Per stabilire la migliore politica di indicizzazione visualizza il piano di esecuzione della query, sperimentando con varie combinazioni di indici e colonne.

Ovviamente non devi "sparare a caso", ma seguire un po' di buon senso in base alla struttura della tabella, al suo utilizzo e al tipo di indice che vuoi implementare.

Sui Books Online troverai una montagna di documentazione sugli indici...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Ho capito,
ma un'indice lo crea da sql server management studio cliccando nella tabella interessata la voce indici/chiavi e aggiungendo un indice che ha come nominativo: IX_nometabella, vero?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>ma un'indice lo crea da sql server management studio cliccando
>nella tabella interessata la voce indici/chiavi e aggiungendo
>un indice che ha come nominativo: IX_nometabella, vero?
Se vuoi veramente imparare a "dominare" SQL Server, impara ad eseguire tutte le operazioni via comandi T-SQL.
Un indice lo crei tramite il comando CREATE INDEX...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

ho capito,
senti nella tabella su cui deve eseguire diverse select con diversi where, mi consigli di creare un solo indice che raggruppa le colonne che poi verrano utilizzate nelle select?

esempio posso avre le seguenti select:

select....where codice=@codice

select....where data=@data_elaborazione

select....where codice=@codice and data=@data_elaborazione and codicenazione=@codnazione


etc..
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>senti nella tabella su cui deve eseguire diverse select con diversi
>where, mi consigli di creare un solo indice che raggruppa le
>colonne che poi verrano utilizzate nelle select?
A questa domanda puoi rispondere solo tu osservando i piani di esecuzione delle query con varie combinazioni di indici.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

ok

va bene questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5