J'ai une requête dans une page ASP. Le jeu d'enregistrements que j'obéis doit être imprimé dans 3 tables différentes, après quelques conditions. Donc, pour éviter d'exécuter 3 fois presque la même requête, j'ai décidé de rechercher dans le jeu d'enregistrements les résultats dont j'ai besoin ... donc j'ai besoin de faire un RS.MoveFirst deux fois. Mais ... lorsque j'ai analysé avec SQL Profiler, j'ai vu que l'opération MoveFirst ré-exécute ma requête ... exactement ce que je voulais éviter. Comment puis-je mettre en cache les résultats et seulement déplacer le jeu d'enregistrements?Comment éviter de réexécuter la requête sur un MoveFirst
Répondre
Utilisez un recordset déconnecté
Const adOpenStatic = 3
Const adUseClient = 3
Const adLockOptimistic = 3
Dim conn: Set conn = Server.CreateObject("ADODB.Connection")
conn.Open sYourConnectionString
Dim rs : Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open sYourSQL, conn, adOpenStatic, adLockOptimistic
Set rs.ActiveConnection = Nothing
conn.close
'' // You can now roam around the recordset with .MoveFirst, .MoveNext etc without
'' // incurring any further hits on the DB.
de Notez que si vous avez des paramètres à fournir à votre sql, vous aurez besoin d'utiliser un objet ADODB.Command
entre la connexion et recordset (ne soyez pas tentés d'utiliser la concaténation de chaîne) . Le principe est toujours le même: utilisez un emplacement de curseur client et un jeu d'enregistrements statique, puis détachez et fermez la connexion.
'' 'adOpenStatic = 3''' Utilise un curseur statique. ** Une copie statique d'un ensemble d'enregistrements ** que vous pouvez utiliser pour rechercher des données ou générer des rapports. Les ajouts, modifications ou suppressions effectués par d'autres utilisateurs ne sont pas visibles. https://msdn.microsoft.com/fr-fr/library/ee252445(v=bts.10).aspx –
Personnellement, je voudrais simplement utiliser rs.getRows()
et de naviguer dans le tableau ... non seulement sont u que u ne vous a frappé à nouveau la base de données devrait voir un énorme gain de performance à chaque fois que vous l'utilisez
- 1. Comment éviter un NSCachedImageRep
- 2. Comment éviter de répéter une sous-requête CORRELATED?
- 3. Comment éviter la fragmentation de tas?
- 4. Comment réexécuter un sous-programme sans redémarrer le script dans le débogueur de Perl?
- 5. Puis-je éviter d'indiquer le nom de la bibliothèque dans une requête SQL à un AS400?
- 6. Comment éviter de trébucher sur la nomenclature UTF-8 lors de la lecture de fichiers
- 7. Comment définir la propriété UniqueRecords de la requête sur Oui?
- 8. Éviter d'utiliser la même sous-requête plusieurs fois dans une requête
- 9. Réinitialiser la force sur une requête ajax?
- 10. Pour éviter l'insertion sur Refresh
- 11. insérer une requête sur la même page à partir de laquelle les données sont transférées
- 12. Comment éviter Sql Query Timeout
- 13. Éviter la récursivité
- 14. Éviter la réinitialisation de la section critique
- 15. Comment éviter ces blocages?
- 16. Aide sur la requête SQL
- 17. Comment éviter de copier des images en double sur la photothèque de l'iPhone?
- 18. Optimisation de la requête MySQL pour éviter "Using where; Utilisation temporaire; Utilisation de filesort"
- 19. Comment éviter de clignoter lors de la mise à jour de la page d'ajax
- 20. Comment éviter les doublons?
- 21. Comment puis-je éviter PHP éviter évaluation paresseux?
- 22. Éviter l'analyse de table complète
- 23. Comment puis-je éviter l'erreur d'exécution 3075 lors de l'exécution de cette requête Access VBA?
- 24. Comment éviter les flashs bizarres?
- 25. Comment éviter une fenêtre d'authentification native dans AIR sur Mac?
- 26. Comment éviter l'entartrage dans la barre de défilement flex
- 27. éviter mime trucage sur les téléchargements php
- 28. Routage basé sur la requête hôte uri
- 29. Comment éviter l'injection SQL dans une requête SQL avec l'opérateur Like à l'aide de paramètres?
- 30. pour éviter la duplication de la facture. contre l'ID particulier
instantané ou données dynamiques configurés? Est-ce que dbSeeChanges est utilisé? –
forwardonly (la valeur par défaut) Obs: Je n'ai pas besoin d'obtenir les modifications après la première exécution de la requête – Roxana