IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[C# 2.0/SqlServer] Comment optimiser l'affectation d'un nouveau login ?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut [C# 2.0/SqlServer] Comment optimiser l'affectation d'un nouveau login ?
    Bonjour, j'utilise C#2.0 et sql server avec ADO.NET.
    Sur mon appli, je veux pouvoir affecter un login à un nouvel utilisateur. Pour cela, j'appelle une procédure stockée qui me compte le nombre d'utilisateurs possédant le login désiré (le login est stocké dans une colonne de ma table utilisateur). Je regarde si ce nombre est > 0, alors je modifie le login désiré et je recommence la procédure. sinon, j'affecte ce login, puisque je suis sur qu'il est unique dans la base.
    Le souci que j'ai, c'est que l'éxécution de la procédure stockée prend environ 3 sec sur 2000 entrées dans la table. Etant donnée que ce travail doit être mis dans une boucle, ce temps est beaucoup trop long. N'y a-t-il rien a faire pour accélérer ce traitement?

    Merci

  2. #2
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    C'est pas plus rapide d'utiliser exists ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(exists(select * from TBL_UTILISATEUR where VCH_LOGIN = @NEWLOGIN))
    Mais bon, je pense que ça a plutôt sa place sur le forum SQL Serveur, vu que ça relève des performances de SQL, ça... et puis même, pour 2000 utilisateurs, 3s, ça me parait énorme...

    Tu pourrai poster ton code s'il-te-plait ? Ca aide à réfléchir, en général :o)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Merci.
    La procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            SELECT @IsUserExists='1' From Users
    	where Users.Login=@login
     
     
     
    	IF (@IsUserExists = '1')
     
    		SELECT 1;
     
    	ELSE
     
    		SELECT 0;
    et le code C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         if (Int32.Parse(cmd.ExecuteScalar().ToString()) == 0)
              return false;
     
         return true;

  4. #4
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    ben j'aurai écrit (sans savoir ce que veut dire le "@IsUserExists='1'")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (exists( select * from Users	where Users.Login=@login))
        select '1'
    else
        select '0'
    Mais je doute que ça fasse 3s de différence sur 2000 utilisateurs... Le problème vient peut-être d'ailleurs ?

    L'application et la base de donnée sont sur le même ordinateur ?
    Tu passes par un reseau ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    La base et le soft sont sur le meme pc. Le pc est récent.
    Quand je fais du pas a pas, je vois bien que c'est l'appel à la procédure qui prend du temps... Peut etre que je devrais indexer la colonne du login...

    Ah ca y est, j'ai trouvé!!
    J'ai simplement mis un index sur la colonne de ma table et tout s'est arrangé!!
    Merci pour ton aide en tout cas!

  6. #6
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    De rien !

    clique sur résolu ! ;o)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tables][Relations] Comment optimiser ?
    Par liliprog dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 23/12/2005, 02h08
  2. [sqlserver] comment appeler une application a distance
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/09/2005, 17h24
  3. [Perf] Comment optimiser son code ?
    Par Frifron dans le forum Général Java
    Réponses: 12
    Dernier message: 11/08/2005, 09h05
  4. [Performance]Comment optimiser la vitesse ?
    Par le Daoud dans le forum Général Java
    Réponses: 13
    Dernier message: 03/06/2005, 15h47
  5. Comment optimiser une jointure ?
    Par seb_asm dans le forum Administration
    Réponses: 21
    Dernier message: 25/06/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo