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

Windows Forms Discussion :

[VB.NET]Performance exécution procédure stockée


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de Franck2mars
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 64
    Points
    64
    Par défaut [VB.NET]Performance exécution procédure stockée
    Salut,

    j'exécute une procédure stockée de nombreuses fois, cependant, les performances sont assez mauvaises, l'exécution de 10000 fois la procédure stockeé prend 5-6 Minutes je l'exécute de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    transaction.Parametre("@nom_table", Me.ComboBox_listetables.Text)
    transaction.Parametre("@champs", champ)
    Console.WriteLine(champ)
    transaction.Parametre("@data", tablodata(i).Replace(",", Chr(34) + "," + Chr(34)))
    transaction.Execute()
    Application.DoEvents()
    
    sachant que transaction est un objet de la classe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    PublicClass ...
    PrivateShared _Sql_Conx AsNew OleDb.OleDbConnection 
    PrivateShared _Sql_Cmd AsNew OleDb.OleDbCommand 
    PrivateShared _Sql_Adp AsNew OleDb.OleDbDataAdapter 
     
    PublicFunction OpenConnexion(ByVal Str_Chaine_Connexion AsString) As OleDb.OleDbConnection
    EndFunction
    'Définition d'une connexion SQL a l'aide du nom du serveur et le nom de la base de données
    PublicFunction OpenConnexion(ByVal Str_Server AsString, _
    ByVal Str_Bd AsString) As OleDb.OleDbConnection
    Try
    With _Sql_Conx
    .ConnectionString = "Server=" & Str_Server & "; Integrated Security=SSPI; DataBase=" & Str_Bd
    .Open()
    .CreateCommand()
    EndWith
    Return _Sql_Conx
    Catch ex As Exception
    Throw ex
    EndTry
    EndFunction
    'Définition d'une commande pour exécuter une procédure stockée
    PublicSub Command(ByVal Str_Nom_Procedure AsString)
    Try
    Dim Sql_Cmd AsNew OleDb.OleDbCommand
    With Sql_Cmd
    .CommandText = Str_Nom_Procedure
    .Connection = _Sql_Conx
    .CommandType = CommandType.StoredProcedure
    EndWith
    _Sql_Cmd = Sql_Cmd
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    #Region " Types de paramétres "
    'Pour un valeur de type entier avec le nom du paramètre
    PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
    ByVal Int_Valeur AsInteger)
    Try
    Dim _Sql_prm AsNew OleDb.OleDbParameter
    _Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.Int)
    _Sql_prm.Value = Int_Valeur
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    'Pour une valeur de type chaîne de caractère avec le nom du paramètre
    PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
    ByVal Str_Valeur AsString)
    Try
    Dim _Sql_prm AsNew OleDb.OleDbParameter
    _Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.VarChar)
    _Sql_prm.Value = Str_Valeur
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    'Pour une valeur de type booléen avec le nom du paramètre
    PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
    ByVal Bln_Valeur AsBoolean)
    Try
    Dim _Sql_prm AsNew OleDb.OleDbParameter
    _Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.Bit)
    _Sql_prm.Value = Bln_Valeur
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    'Pour une valeur de type date avec le nom du paramètre
    PublicSub Parametre(ByVal Str_Nom_Parametre AsString, _
    ByVal Dt_Valeur As DateTime)
    Try
    Dim _Sql_prm AsNew OleDb.OleDbParameter
    _Sql_prm = _Sql_Cmd.Parameters.Add(Str_Nom_Parametre, SqlDbType.DateTime)
    _Sql_prm.Value = Dt_Valeur
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    #EndRegion
    'Permet d'exécuter la commande
    PublicSub Execute()
    Try
    Console.WriteLine(_Sql_Cmd.CommandText)
    _Sql_Cmd.ExecuteNonQuery()
    _Sql_Cmd.Parameters.Clear()
    Catch ex As Exception
    MsgBox("You don't have the right to insert this data, please contact your administrator!")
    'Application.ExitThread()
    EndTry
    EndSub
    'Récupère le enregistrement dans un DataSet
    'Ferme la connection SQL
    PublicSub CloseConnexion()
    Try
    _Sql_Conx.Close()
    Catch ex As Exception
    Throw ex
    EndTry
    EndSub
    EndClass
    

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    c'est peut etre le code de ta procedure stockée qu'il faut améliorer

  3. #3
    Membre du Club Avatar de Franck2mars
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    L'améliorer c'est à dire? Dans quel sens? Je souhaiterais l'optimiser mais par quel moyen?

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    ca depend de ton code, tu peux creer des index ou peut etre modifier le code et trouver une autre facon de faire qui ira plus vite

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/02/2011, 01h10
  2. VB .net, Odbc et Procédure Stockée
    Par Flamenco dans le forum VB.NET
    Réponses: 6
    Dernier message: 14/04/2009, 15h57
  3. Exécuter procédure stocké sans reload de page
    Par jpower dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/08/2007, 23h11
  4. Réponses: 9
    Dernier message: 18/07/2007, 12h34
  5. [SQL SERVER 2K]Droits d'exécution procédure stockée
    Par Franck2mars dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/05/2006, 16h01

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