Mon travail est la maintenance d'une application qui utilise beaucoup le serveur SQL (MSSQL2005).
Jusqu'à présent, le serveur intermédiaire stocke les codes TSQL en XML et envoie des requêtes TSQL dynamiques sans utiliser les procs stockés.
Comme je suis capable de modifier ces requêtes XML, je souhaite migrer la plupart de mes requêtes vers des process stockés.
Question est que vous avez choisi:Optimisation du code TSQL
La plupart de mes requêtes ont même Lorsque les conditions contre une table
Exemple:
Select
.....
from ....
where ....
and (a.vrsta_id = @vrsta_id or @vrsta_id = 0)
and (a.podvrsta_id = @podvrsta_id or @podvrsta_id = 0)
and (a.podgrupa_2 = @podgrupa2_id or @podgrupa2_id = 0)
and (
(a.id in (select art_id from osobina_veze where podosobina_id in (select ado from dbo.fn_ado_param_int(@podosobina))
group by art_id
having count(art_id)= @podosobina_count))
or ('0' = @podosobina)
)
Ils ont aussi même si les conditions sur autre table.
Comment organiser mon code?
Quelle est la bonne façon?
Dois-je faire une fonction de valeur de table que je vais utiliser dans toutes les requêtes
ou utiliser des tables #Temp et simples internes joindre ma requête à chaque fois que proc s'exécute? ou utilisez #temp classé par fonction de valeur table?
ou laisser toutes les requêtes avec cette grande clause where et espérer que l'index va faire leur travail.
ou utiliser WITH (instruction)