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
Répondre
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.
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.
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
Dans un tel scénario au lieu d'utiliser la pagination gridview vous pouvez utiliser la pagination dynamique et obtenir que les enregistrements de base de données qui sont spécifiques à la page seulement.
http://www.codeproject.com/KB/custom-controls/ASPNETPagerControl.aspx
- 1. Jeu de données typé pour remplir des objets personnalisés?
- 2. Remplir le jeu de données en accédant directement aux colonnes?
- 3. Comment puis-je remplir un jeu de données avec des données d'un IQueryable?
- 4. Tracer des milliers de points avec le dojo
- 5. Remplir de façon asynchrone un jeu de données fortement typé
- 6. Créer une table SQL pour chaque utilisateur de site Web (milliers) avec des milliers de lignes?
- 7. Récupérer le jeu de données avec PetaPoco
- 8. Jeu de données de Tweets avec des données de géolocalisation
- 9. Remplir GridView avec des données d'objet
- 10. pyqt - remplir QTableWidget avec des données csv
- 11. automatique des données avec menu déroulant remplir
- 12. Stockage de données XML dans des milliers de petits fichiers
- 13. problème pour remplir SelectOneMenu avec des données
- 14. Push Uiview et remplir avec des données
- 15. Remplir une table SQL avec des données
- 16. NSMutableArray: comment le remplir avec des données, relâchez-le, remplissez-le avec les données à nouveau
- 17. Cache des milliers d'images
- 18. Comment afficher des milliers d'enregistrements?
- 19. Aide avec Excel VBScript - remplir des colonnes avec des données
- 20. comment remplir, mélanger, distribuer le jeu de cartes
- 21. Séparateur de milliers avec printf
- 22. Spécifiez le séparateur des milliers dans CurrentUICulture
- 23. Remplir un groupe de radiobutton avec des données de la base de données de squlite
- 24. Remplir DataTable avec des enregistrements de la base de données?
- 25. problèmes de performance avec des milliers de lignes dans trois.js
- 26. L'appel ADO.NET côté client ne parvient pas à remplir le jeu de données
- 27. données de recherche de jeu de données
- 28. remplir des données dans un tableau avec des zéros
- 29. Performance de RaphaelJS avec des milliers de chemins/rectangles
- 30. Remplir un indexedDB avec des données de fichier .csv
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. –
avez-vous appliqué des index sur la base de données? –