Group: microsoft.public.it.sql




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