requetes sql plus lentes ???

requetes sql plus lentes ??? - SQL/NoSQL - Programmation

Marsh Posté le 10-03-2005 à 09:24:35    

Bonjour à tous,  
 
Je vous explique mon souci :
Je suis novice (debutant +) en SGBD et j'interroge une base de données SQL SERVER depuis une appli web en vb.NET.
J'ai constate que les memes requetes pourtant simples (ex : UPDATE ... SET ... = ... WHERE .... AND ....) mettent beaucoup plus de temps a s'executer lorsque la base (la table interrogée en l'occurence) est plus remplie.
 
Mes questions sont :
- Y'a t'il un moyen efficace d'optimiser les temps d'execution de ces requetes quand la table contient beaucoup de données.
 
- Y'a t'il des differences a ce niveau la entre un SQL SERVER classique et un MSDE.
 
MErci d'avance pour vos reponses ...  :)  
 
 [:skwal74]


Message édité par skwal74 le 11-03-2005 à 10:17:20
Reply

Marsh Posté le 10-03-2005 à 09:24:35   

Reply

Marsh Posté le 11-03-2005 à 08:43:04    

PLEASE HELP !!!!!!!!!!!!!!!!!!

Reply

Marsh Posté le 11-03-2005 à 08:53:06    

Ben ta base elle est bien conçue ? T'as des index bien placés ?

Reply

Marsh Posté le 11-03-2005 à 09:03:17    

J'ai une clé primaire sur un champ mais qu'est ce que t'appelles des index exactement ? (je suis pas sur  ...)
Cette table est liée à 3 autres en indiquant les foreign keys ...

Reply

Marsh Posté le 11-03-2005 à 09:24:30    

Qu'entends tu par "lent" ? 10 ms au lieu de 1 ? ou 10 secondes ? 1 heure ?
 
Edit :  
-tu as regardé l'explain plan pour voir ce qui mettait du temps ?
-Poste ton MPD et tes requetes, on t'aidera (sans ca on peut rien faire) : genre si tu utilises beaucoup de like '%%' c'est normal que ca soit pas super rapide... Pareil si tu utilises des fonctions a tire larigot... Comment sont faites tes jointures dans les requetes ? Utilies tu des (nolock) sur les select ? Des SET NOCOUNT ? Bref, plus de détails !


Message édité par ToxicAvenger le 11-03-2005 à 09:27:23
Reply

Marsh Posté le 11-03-2005 à 09:34:55    

skwal74 >> pourrais tu stp éditer ton titre pour le mettre en minuscules stp ? les titres en caps sont hors charte


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-03-2005 à 10:30:13    

ToxicAvenger a écrit :

Qu'entends tu par "lent" ? 10 ms au lieu de 1 ? ou 10 secondes ? 1 heure ?
 
Edit :  
-tu as regardé l'explain plan pour voir ce qui mettait du temps ?
-Poste ton MPD et tes requetes, on t'aidera (sans ca on peut rien faire) : genre si tu utilises beaucoup de like '%%' c'est normal que ca soit pas super rapide... Pareil si tu utilises des fonctions a tire larigot... Comment sont faites tes jointures dans les requetes ? Utilies tu des (nolock) sur les select ? Des SET NOCOUNT ? Bref, plus de détails !


 
Ok excuses ... je developpe un peu mon prob.
J'ai 4 tables qu'on va appeller A, B, C et D
Dans D j'ai les idA, idB et idC qui sont clés etrangeres
Je fais une requete UPDATE D SET champMachin = val WHERE idA = 1 AND idB=2 and idC=3.
Cette requete est executée dans une boucle vb un grand nombre de fois (peu importe).
Dans mon code vb je trace le temps avant et apres cette requete pour essayer d'analyser approximativement le temps qu'elle prend a chaque fois.
1er cas : base peu charge (moins de 1000 enregistrements) je note environ 0.01 sec pour la MAJ.
2eme cas : base bien charge (plusieurs milliers d'enregistrements) je note 0.30 sec pour la meme MAJ.
Cette difference repetee X fois me donne des ecarts enormes.
Voila mon probleme en detail.
Je n'utilisa pas de LIKE, de JOIN, de fonctions etc ... (c'est d'ailleurs pt etre mon probleme je fais des traitements de base de debutants ... :( )
 
Merci de prendre le temps d'essayer de comprendre.
 
Skwal
PS: Je sais pas ce qu'est l'explain plan (desole)

Reply

Marsh Posté le 11-03-2005 à 11:34:55    

Si ton champmachin fait parti d'une clé, le temps d'execution va augmenter necessairement. En gros, il faut que, par requete, il recherche les enregistrements correspondants (> avec la qté), modifie l'index à chaque update.
 
Selon le parametrage du serveur, les modifications peuvent ne pas etre inscrites immediatement en base, mais logguées. Et bcp de modifications successives vont reduire les perfs car il va falloir en plus de l'index, verifier dans les logs les derniers changements.


---------------
MZP est de retour
Reply

Marsh Posté le 11-03-2005 à 11:36:45    

Pour le showplan, avec sybase:
 
set showplan on
go
Et tu mets ici ta requete.
 
Au lieu de la reponse, tu auras le plan d'execution de la requete. Cad, comment le moteur va l'executer, ce qu'il va faire, et quels index il va utiliser.


---------------
MZP est de retour
Reply

Marsh Posté le 11-03-2005 à 12:08:24    

Pour SQL Server, tu executes ta proc stoc dans le query analyser en cochant : Requete -> Afficher le plan d'execution (ctrl + K)... Bon bien sur apres c'est pas dit que tu comprennes le schéma qu'il va te sortir vu que tu as l'air de débuter...
 
Sinon essaye d'utiliser des PrepareCommande puisque tu utilises tjs la meme proc stoc dans une boucle (seuls les params changent j'imagine)...


Message édité par ToxicAvenger le 11-03-2005 à 12:08:40
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed