Consiglio e spiegazione funzionamento motore sql

giovedì 31 marzo 2011 - 21.35

massimo1965 Profilo | Junior Member

Ciao a tutti,
avrei bisogno di capire una cosa in merito al funzionamento del motore SQL.
Quando eseguo una query sql da un client verso un server sql che cosa ritorna a client ? Solo il risultato della query oppure un blocco di informazioni che vengono poi filtrate dal client ?
Vedo di spiegarmi meglio :
supponiamo che :
- crei un servizio web residente su un server sql
- questo riceve le richiesta da enne client per l'esecuzione di query sql del tipo :
select t1.id,t1.nome,t2.saldo from clienti t1
inner join coge t2 on t2.id = t1.id
where t1.codice = '123' and t2 = '2010'
- una volta elaborata invii il risultato al client che l'ha richiesta
- il quale ci fa quello che vuole , popolare una griglia o un creare un report...

tale soluzione sarebbe : più o meno performante e più meno sicura se la stessa query venisse inviata direttamente dal client al server sql ?

Vi ringrazio per la pazienza
Massimo

lbenaglia Profilo | Guru

>Ciao a tutti,
>avrei bisogno di capire una cosa in merito al funzionamento del
>motore SQL.
>Quando eseguo una query sql da un client verso un server sql
>che cosa ritorna a client ? Solo il risultato della query oppure
>un blocco di informazioni che vengono poi filtrate dal client
>?

Ciao Massimo,

Se stai parlando di SQL Server, Oracle, MySQL, PostgreSQL, ecc. "il motore" risiede sul server, pertanto i client non faranno altro che sottoporre le query al server che eseguirà le elaborazioni restituendo il set di righe o l'esito dell'operazione che soddisfano la richiesta.
Se invece consideriamo dei DBMS file-based come Access, il DBEngine (JET in questo caso) risiede su ogni singolo client e le elaborazioni sono sempre eseguite localmente.

>Vi ringrazio per la pazienza
Prego.

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

massimo1965 Profilo | Junior Member

Grazie Lorenzo
sto parlando di SQL server 2005 e poi 2008.
Quindi in pratica non ho nessun vantaggio a creare una struttura del genere (anzi)
Un ultima cosa, per ottimizzare le query, oltre alla costruzione delle join in modo logico, un parametro da considerare è anche il numero delle colonne, giusto ? Mi spiego, se mi serve estrapolare il campo nome, cognome e via, scrivo select nome,cognome,via from... e non select * from in quanto il passaggio di dati fra server e client, in questo caso sarà maggiore che rispetto a primo. Corretto ?

Scusa se ti chiedo conferma di queste cose ma stiamo discutendo per la realizzazione di un progetto e volevo avere delle conferme da persone più esperte.

Grazie ancora.

lbenaglia Profilo | Guru

>Quindi in pratica non ho nessun vantaggio a creare una struttura
>del genere (anzi)
Direi di si

>Un ultima cosa, per ottimizzare le query, oltre alla costruzione
>delle join in modo logico, un parametro da considerare è anche
>il numero delle colonne, giusto ? Mi spiego, se mi serve estrapolare
>il campo nome, cognome e via, scrivo select nome,cognome,via
>from... e non select * from in quanto il passaggio di dati fra
>server e client, in questo caso sarà maggiore che rispetto a
>primo. Corretto ?
Assolutamente corretto.
Un altro aspetto legato alle performance è l'indicizzazione del db.
Sui Books Online scoprirai le diverse tipologie di indici offerte da SQL Server e consigli su quali colonne è opportuno indicizzare:
http://msdn.microsoft.com/en-us/library/ms189271.aspx

>Scusa se ti chiedo conferma di queste cose ma stiamo discutendo
>per la realizzazione di un progetto e volevo avere delle conferme
>da persone più esperte.
Ma figurati, i forum servono proprio per scambiare opinioni

>Grazie ancora.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
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