2010-08-21 8 views
1

Lorsque je travaillais sur un projet, je suis tombé sur une fonctionnalité dans laquelle j'ai besoin de mettre en œuvre la boîte de texte suggérer automatiquement en utilisant ASP classique. Je l'ai fait et ça fonctionne bien. J'utilise l'objet XMLHttp Request pour choisir les valeurs de la colonne de la base de données lorsque l'utilisateur saisit quelque chose dans la zone de texte.Classique ASP Auto Suggérer comme Google

Tout fonctionne bien. Mais si la table contient trop de lignes (37 000+), les performances de l'application diminuent. S'il vous plaît suggérer quelles mesures dois-je prendre afin d'améliorer la performance dans ce cas. Pourquoi ne pas simplement montrer un SELECT TOP 15 [name] ...?

+0

Où est exactement le goulot d'étranglement? Vous ne retournez pas au navigateur toutes les 37000 suggestions possibles, n'est-ce pas? –

+0

sa fin de la base de données, requête prend beaucoup de temps pour choisir les enregistrements. J'utilise select columnname du nom de table où columnname aime 'usertext%'. – MUS

+0

Si le traitement de la requête SQL est lent, vous avez besoin d'une solution relative à DB. Essayez de poster une question avec 'sql' ou des tags similaires. J'essaierais de créer un index de colonnes, mais je ne suis pas expert en DB. Généralement, le traitement de 37000 lignes devrait être assez rapide (en supposant que vous ne retourniez pas toutes les 37000 lignes à votre application) –

Répondre

3

?

pourquoi avez-vous besoin de les montrer tous ...

si quelqu'un entre dans « B » je vraiment (en tant qu'utilisateur) ne vous attendez pas (l'application) pour me montrer toutes les possibilités.

... ou je me trompe?


P.S. vous devez commencer à utiliser quelque chose comme jQuery ... en 10 lignes que vous feriez la même chose que tout votre code javascript ;-)


ajouté

Il est normal d'avoir la boîte de suggestion automatique commence seulement à suggérer après que les 3 premiers caractères aient été tapés ... essayez ceci en premier!

juste ajouter dans votre méthode showHint

if (str.length < 3) return; 
+0

Oui, vous avez raison à propos de JQuery. Mais le véritable coupable est sur la fin de la base de données, ce qui prend du temps pour exécuter la requête et filtrer les enregistrements. – MUS

+0

Quelle est votre déclaration SQL ici? ne devrait pas être si gros ... Et quelle version db utilisez-vous? – balexandre

0

Utilisez les index sur les champs de base de données que vous avez dans votre déclaration où-dans la requête et il sera beaucoup plus rapide.