2012-08-29 8 views
0

Je crée un contrôle personnalisé pour effectuer une recherche et fournir un résumé de l'état de plusieurs éléments dans la base de données. Il y a 20 statuts différents, et afin de déterminer le nombre pour chaque statut, je fais un NotesDatabase.search pour compter chaque statut. C'était bien quand il n'y avait que 2 statuts à vérifier, mais l'entreprise veut maintenant tous les afficher. :)Manière efficace d'effectuer plusieurs recherches dans un contrôle personnalisé

Je suis préoccupé par le temps qu'il faudra pour faire la recherche, et je veux le faire de la manière la plus efficace possible.

choses que j'ai pris en compte:

  • Les documents sont mis à jour régulièrement ont, donc je ne peux pas vraiment un agent faisant les CALC et le contrôle personnalisé exécuter une recherche pour les valeurs statiques. Cela signifierait que les données sont anciennes.
  • Les résultats dépendent de l'utilisateur connecté, faisant des comptes en fonction de son identifiant de connexion, donc je ne peux pas vraiment avoir des vues séparées par personne.

Est-ce que quelqu'un a une solution propre suggérée?

Je suis sur le point de commencer à tester les 20 recherches et mettra à jour ces résultats avec ces résultats, mais je m'attends à ce qu'il soit très lent.

A

Répondre

0

au lieu de 20 recherches vous pourriez effectivement être mieux avec ONE appel Ajax. Créez une vue classée par votre statut et réduite. Ensuite, faites un appel Ajax ...statusview?ReadViewEntries&Outputformat=JSON&count=100. Cela vous donnera les 100 entrées de résumé d'état avec une propriété childcount.

Cela fonctionnerait-il pour vous?

+0

Merci - Je suis en train de suivre cette voie, ou une variante de celle-ci au moins. En fait, j'ai juste pensé à utiliser une vue std, filtrée par le nom de la catégorie, montrant juste le statut et le nombre. Ensuite, peaufiner l'affichage de la vue pour ne pas afficher les catégories comme extensibles et supprimer les lignes de détail. Si cela ne fonctionne pas, je vais revenir au chemin suggéré ci-dessus. – alt

+0

ne hésitez pas à accepter la réponse :-) – stwissel

1

l'autre option: au lieu de @DBLookup, vous allez dans la vue et vous la parcourez de bout en bout en utilisant un navigateur. C'est assez rapide et devrait être plus rapide que la recherche 20x.

Bien sûr, vous pouvez mettre à jour les pointages dans l'événement QuerySave et l'écrire dans un profil de mémoire spécifique à l'utilisateur.

Ainsi, dans votre QuerySave, vous verriez quels utilisateurs sont chargés dans un ApplicationBean et les mettez à jour. Si un utilisateur se connecte nouvellement, une recherche dans la base de données est effectuée dans le bean d'application. Lorsqu'une session expire (écouteur de session), l'entrée dans ApplicationBean est supprimée.

0

Serait-il possible d'ajouter 20 documents d'état, et de mettre à jour un ou plusieurs de ces documents chaque fois que certaines conditions sont remplies? Chaque fois qu'un document est mis à jour, un agent s'exécute pour correspondre à ces conditions, afin de mettre à jour le statut.

S'il y a beaucoup de mises à jour par jour, ce n'est pas vraiment efficace.

Questions connexes