Subject: Evitare Dynamic T-sql
From: Sy
Date: 4/26/2007 9:56:57 AM
Ciao amici,
un consiglio ancora una volta.... ;)
Nel sito che sto per creare dovrei implementare una funzionalità (in un
contesto diverso) di ricerca avanzata esempio:
http://www.agenzieimmobiliari.com/ vedi "Ricerca veloce immobili"
Ora, per effettuare una ricerca simile "dovrei" usare dynamic sql oppure
posso evitarlo ed applicare altre tipologie di costruzione della Where???
Ovviamente le performance sono indispensabili !!!!
Tutti consigli/aiuti sono accettatisssimissimi...
Grazie mille
Simone
Subject: Evitare Dynamic T-sql
From: Lorenzo Benaglia
Date: 4/26/2007 10:10:07 AM
Sy wrote:
> Ora, per effettuare una ricerca simile "dovrei" usare dynamic sql
> oppure posso evitarlo ed applicare altre tipologie di costruzione
> della Where??? Ovviamente le performance sono indispensabili !!!!
Ciao Simone,
Itzik suggerisce in questi casi di utilizzare il T-SQL Dinamico (ma scritto
in un certo modo), mentre il nostro Marcello ha scoperto che con le UDF
Table Valued ottieni le stesse prestazioni senza ricorrere del Dynamic SQL.
Leggi il seguente thread:
http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/59359884f3bc01d8
/
> Tutti consigli/aiuti sono accettatisssimissimi...
> Grazie mille
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
Subject: Evitare Dynamic T-sql
From: Andrea Benedetti
Date: 4/26/2007 10:11:44 AM
Salve Sy!
"Sy" <pippo@paperino.it> ha scritto nel messaggio
news:%23CcV5h9hHHA.1312@TK2MSFTNGP03.phx.gbl...
> Ciao amici,
> un consiglio ancora una volta.... ;)
> Nel sito che sto per creare dovrei implementare una funzionalità (in un
> contesto diverso) di ricerca avanzata esempio:
> http://www.agenzieimmobiliari.com/ vedi "Ricerca veloce immobili"
>
> Ora, per effettuare una ricerca simile "dovrei" usare dynamic sql oppure
> posso evitarlo ed applicare altre tipologie di costruzione della Where???
> Ovviamente le performance sono indispensabili !!!!
>
> Tutti consigli/aiuti sono accettatisssimissimi...
Se le possibili combinazioni di ricerca non sono moltissime perchè non
crearti N stored procedure che andrai a richiamare a seconda del filtro
scelto dall'utente?
Ovvero: alla pressione del tasto "ricerca" verifichi cosa ha selezionato /
compilato l'utente.
Se ha scelto solo regione andrai a chiamare la tua
exec up_ricercaPerRegione @regione
se ha scelto solo città
exec up_ricercaPerCitta @citta
se ha scelto entrambi
exec up_ricercaRegioneCitta @regione = ... , @citta = ...
Che dici?
> Grazie mille
>
> Simone
Ciao Simone!
--
Andrea Benedetti
Microsoft MVP - SQL Server
www.absistemi.it - www.ugiss.org
http://blogs.ugidotnet.org/ab
http://mvp.support.microsoft.com
http://italy.mvps.org
Subject: Evitare Dynamic T-sql
From: AlessandroD
Date: 4/26/2007 10:13:10 AM
Sy wrote:
>
> Ora, per effettuare una ricerca simile "dovrei" usare dynamic sql
> oppure posso evitarlo ed applicare altre tipologie di costruzione
> della Where??? Ovviamente le performance sono indispensabili !!!!
>
Che dire, se vuoi star tranquillo prova tutte e due le soluzioni e poi
decidi quale tenere in produzione.
Per il T-SQL dinamico se adotti una funzioni inline che accetti quei 6
parametri di cui hai bisogno e poi ai tuoi utenti dai come unico permesso la
select su quella funzione, io non vedo sinceramente motivi di fustigazione o
altro... :-)
Ah, ricordati che nel caso del T-SQL dinamico, per avere dei piani di
esecuzione decenti, e quindi prestazioni ottimali, devi costruire il comando
SQL completo con il valore corrente dei parametri, tradotto la chiamata alla
tua funzione inline deve essere del tipo:
select * from ufnRicercaImmobili('Sardegna',null,null,'Casa vacanza',null,1)
E poi con la exec() esegui quella stringa.
In queste condizioni hai il comportamento che credo sia migliore dal punto
di vista prestazioni + sicurezza + leggibiltà del codice.
Ciao, Alessandro
Subject: Evitare Dynamic T-sql
From: Sy
Date: 4/26/2007 10:28:55 AM
Grazie a tutti.... e come sempre siete i "pistoleri" di post più veloci del
NG!!!
Ora valuterò entrambi le soluzioni.
P.S. Andrea, ho letto il tuo ultimo post nel blog.... interessante ;D
Ciao
Simone
Subject: Evitare Dynamic T-sql
From: Andrea Benedetti
Date: 4/26/2007 10:35:17 AM
> P.S. Andrea, ho letto il tuo ultimo post nel blog.... interessante ;D
Parecchio ;-)
Ciao,
Andre
|