2011-03-15 4 views
0

J'utilise Oracle comme backend. Dans la base de données, il y a une table avec 5000 enregistrements et 160 colonnes. Je veux afficher tous ces enregistrements dans gridview (dans asp.net, C#). Mais il faut plus de 10 minutes pour remplir l'ensemble de données. Pouvez-vous suggérer une autre option? Est-il possible d'utiliser du fil?remplir le jeu de données avec des milliers d'enregistrements

+0

Pourriez-vous mettre une page à la fois? de cette façon, vous ne devez apporter que peu d'enregistrements, puis sur le bouton suivant/précédent, vous pouvez charger des données à la demande. –

+0

avez-vous appliqué des index sur la base de données? –

Répondre

2

Je suppose que ce n'est pas le code .net qui prend 10 minutes. Parcourez votre code et trouvez le point d'étranglement où il prend tout ce temps. Cela pourrait très bien être votre requête de base de données. Si c'est la requête, alors vous devez trouver des moyens de l'accorder.

De même, aucun utilisateur n'a besoin de regarder 5000 enregistrements avec 160 colonnes. Déterminez une meilleure façon d'afficher cette information, en fournissant un aperçu ou d'autres moyens de donner un sens et de naviguer à travers toutes ces données. A part cela, vous pouvez essayer de paginer à la place.

Et oui, n'utilisez pas un autre thread pour cela. C'est un design qui doit être retravaillé. L'ajout d'un autre thread n'est pas la solution et peut rendre votre code trop complexe.

0

Récupérer un enregistrement devrait être simple, mais puisque vous le retiendrez beaucoup, il sera probablement lent. Essayez de mettre la pagination de données sur le côté de la base de données, ce qui réduirait le temps de liaison de données & la quantité de données transmises au réseau.

1

hejdig.

J'ai eu un scénario quelque peu similaire il y a quelques années où nous avons eu une discusison, que ce soit la grille ou la recherche de données qui a pris du temps. C'était dans WinForm 2.0 mais le problème est le même.

Nous avons téléchargé un profileur et obtenu la réponse dans quelques minutes. La grille. La requête et le traitement des données n'étaient que quelques pour cent du temps.

Si vous essayez de télécharger 5000 lignes dans une grille de données dans aspnet, vous risquez d'étouffer le système. Commencez par tourner de viewstate. Vous perdez beaucoup de fonctionnalités mais gagnez des bits. Exécuter un profileur Regardez dans l'utilisation d'une grille autre que datagridview de MS. Essayez la pagination. Approximativement dans cet ordre.

Si vous connaissez vos utilisateurs, vous pouvez enregistrer une feuille de calcul pour qu'ils s'ouvrent. Il existe également quelques astuces simples pour ouvrir une page en tant que feuille de calcul (il suffit de générer un fichier CSV ou XML et de changer le type MIME). Si c'est l'interface graphique qui prend du temps c'est.

Joyeux piratage et bonne chasse.

/DE

Questions connexes