Deux questions à méditer:
- Combien de colonnes pourraient être nommés pour la requête?
- Est-ce que les données changent fréquemment? Beaucoup?
Si vous avez un petit nombre de colonnes candidats, et les données ne change pas beaucoup, alors vous voudrez peut-être envisager d'ajouter un indice permanent sur tout ou même toutes les colonnes candidat.
"Blasphème!", j'entends. La plupart des sources vous indiquent de ne jamais indexer chaque colonne d'une table, mais cela est basé sur l'hypothèse générique que les tables sont fréquemment modifiées.
Vous paierez un prix en stockage supplémentaire, ainsi qu'un coup de performance lorsque les données changent.
Quelle est la taille petit et combien est beaucoup, et est le compromis entre la peine? Il n'y a aucun moyen de dire un prieuré parce que "trop lent" est généralement une mesure subjective.
Vous devrez l'essayer, mesurer la taille de vos index, puis l'effet qu'ils ont dans les recherches. Vous devrez équilibrer les coûts avec l'augmentation de la satisfaction de vos clients.
[Ajouté] Oh, encore une chose: les index temporaires sont non seulement physiquement plus lents qu'un scan de table, mais ils détruiraient votre concurrence. La réindexation d'une table nécessite généralement (toujours?) Un verrouillage de table complet, de sorte qu'une seule recherche d'utilisateur peut être effectuée à la fois.
Bonne chance.