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

C# Discussion :

C# ASP.NET lenteur requête BD


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Par défaut C# ASP.NET lenteur requête BD
    Bonjour,

    J'ai un projet sous Visual Studio (application web) en C# ASP.NET avec des requêtes SQL (dans le model) vers une base Access.
    Mon soucis est que l'interrogation de la base de données est très long et cela impacte l'affichage de mes pages web. J'ai un délai d'affichage d'environ 2 à 3 minutes pour récupérer les données de la requête qui est présente dans mon model "Fiche_Impact.cs".

    Requête SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Fiche_Impact WHERE Date_Archivage IS NULL AND Process_ID IN (12870,12910,12914,12920,12922)
    (Il y a environ 900 000 enregistrements dans la table Fiche_Impact et cette requete en retourne environ 9000)

    Connexion à la BD "agir_impact.mdb" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OleDbConnection connect = new OleDbConnection();
                connect.ConnectionString =
                        @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                        @"Data source=agir_impact.mdb";
                connect.Open();
    Auriez-vous quelques pistes afin de réduire la durée de récupération des données d'Access, soit par la requête soit par le code C# à optimiser ?
    Merci d'avance pour votre aide !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 13
    Par défaut
    Bonjour,

    Là comme ça j'ai surtout envie de vous demander si vous ne pouvez pas utiliser une base de données plutôt qu'un fichier de données ? En effet en passant d'Access à autre chose, vous auriez de véritables gains.

    Sinon essayez de limiter les champs à remonter dans votre clause Select, le volume sera moins important.

    Bonne soirée.

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Je pense que le goulot d'étranglement est plutôt côté Access. Avez-vous défini des index sur vos tables ? Notamment sur Date_Archivage et sur Process_ID ici ?

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 966
    Par défaut
    Pour moi François DORIN et Pronoia ont tous les deux raison.

    Une application Web implique de nombreux accès concurrents et Access n'est fait pour ça.
    Il faut donc préférer un véritable SGBDR (SQL Server/Sql Express, MySql, Postgres, Oracle, etc.)

    Et à coté de cela, il est préférable d'optimiser les performances par l'ajout d'index de manière intelligente.
    En effet, mettre des index c'est bien, en abuser c'est contre productif.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Par défaut
    Merci pour vos réponses !

    En effet les nouvelles versions d'applications utilisent MySql mais celle-ci est une ancienne version installée chez un client depuis des années.

    Au niveau du "SELECT *", l'ensemble des champs est utilisé je ne peux donc pas limiter l'accès, je vais essayer tout de suite d'ajouter des index sur ma table, encore merci.

Discussions similaires

  1. [ASP.net]lenteur du chargement des pages
    Par baby83 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 08/11/2008, 10h48
  2. Comment on peut appeler une requête access sous asp.net ?
    Par Khalid.bounouader dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/08/2008, 13h21
  3. Réponses: 2
    Dernier message: 13/02/2008, 22h28
  4. Requêtes select sous c# et asp.Net
    Par haeah dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/03/2007, 17h52
  5. [4D et ASP.NET] Requête sur base 4D
    Par vinz81 dans le forum 4D
    Réponses: 2
    Dernier message: 25/09/2006, 09h16

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