Accès multiples et performances [SqlServer] - SQL/NoSQL - Programmation
Marsh Posté le 26-01-2006 à 16:48:46
normalement, oui.
c'est vrai dans tous les cas, pas seulement avec des accès multiples : généralement, une seule requête faut mieu que x, surtout si les x sont relativement similaires et utilisent donc les mêmes index.
Marsh Posté le 26-01-2006 à 16:50:57
C'est mon cas : pour chaque client je fais environ une quinzaine de requêtes sur cette table avec des critères différents à chaque fois ...
Marsh Posté le 26-01-2006 à 16:55:21
sauf que si c'est "sur cette table", y'a 99,999% que t'utilises plusieurs fois les mêmes indexes
tu peux poster quelques exemples de requêtes qu'on voit ce qu'on peut en faire ?
Marsh Posté le 27-01-2006 à 09:56:22
Qq exemples :
( attention, mes requêtes sont construites ds l'appli en C#, donc {0} et {1} sont des paramètres propres à chaque client )
Code :
|
Marsh Posté le 27-01-2006 à 10:34:30
c'est donc bien plusieurs fois les mêmes requête avec un pouillème qui change.
plusieurs choses :
1) plutôt que de mettre des {0}, etc. utilise les paramètres (avec l'objet Command). bien plus performant, et garanti l'impossibilité de faire du "sql injection"
2) là, je vois deux requêtes appelées deux fois chacune avec des paramètres différents. crée une vue, ou même une fonction, tu gagneras énormément en perfs
Marsh Posté le 27-01-2006 à 10:36:00
Exemple d'utilisation de paramètres (ici avec Oracle, SQL Server diffère légèrement)
Code :
|
Marsh Posté le 26-01-2006 à 12:55:53
Ds mon processus de facturation j'ai des stats à faire à partir d'une table qui contient entre 20 et 60 millions d'enregistrements.
Ces stats consistent à faire 'x' requêtes par client, processus répété pour 'y' clients.
Cà fait donc une multitude d'accès à la base.
L'appli qui génére les stats et la base sont sur la même machine.
Y aurait il un gain quelconque à faire une seule requête par client qui récupère donc la totalité des enregistrements concernés ( donc 1 seul accès à la base par client ), et à faire le filtrage / calcul par l'appli ?