2010-10-25 3 views
0

J'ai un programme dans lequel il va récupérer des données de sql basé sur une plage de dates spécifique .. le problème est quand la plage de dates est fixée à un an ou plus alors que le chargement des données est si lent que parfois le programme ne répond pas. Y at-il un moyen d'éviter cela?comment récupérer des données en bloc à partir de sql sans ralentir le serveur/programme

+1

Quelle est la quantité de données par année? Avez-vous des index sur votre table? À quoi ressemble votre requête? – Dismissile

+0

Plus d'informations seraient nécessaires: est-il synchrone? Combien de données reviennent? La requête SQL est-elle rapide ou est-elle suspendue dans la base de données? Est-il même possible de traiter ces données par lots? Est-il acceptable de ne rapporter que les 100 premiers enregistrements, puis de récupérer les autres à la demande? –

Répondre

1

Vous pouvez charger les données dans un fil d'arrière-plan à l'aide du composant BackgroundWorker.

Cela prendra encore du temps, mais le programme ne sera pas gelé.

Vous pouvez également modifier votre programme pour charger moins de données.
Par exemple, vous pouvez déplacer la logique qui utilise les données vers un sproc sur le serveur.

0

Une autre option consiste à empêcher l'utilisateur de sélectionner une plage de dates aussi étendue.

Cela peut sembler restrictif mais généralement, lorsque l'utilisateur reçoit 10 000 enregistrements distincts, il réalise qu'il doit rendre sa requête plus spécifique. Le temps nécessaire pour extraire le grand ensemble de données n'est qu'une perte de temps pour le serveur, le réseau et l'utilisateur.

Questions connexes