2010-10-08 11 views
1

J'ai une table avec des millions de lignes. Le PK de cette table est une colonne Int. L'utilisateur veut être capable de faire une recherche générique sur les lignes de cette table par ce PK. Lorsque vous faites cette requête de manière triviale, elle sera terriblement lente, car Sql Server effectue une conversion implicite de la valeur de la colonne de int en char afin d'appliquer le caractère générique chaque fois que la requête est exécutée. L'idée serait de créer un index qui stocke la valeur "converti en caractère" de cette colonne int, afin que Sql Server puisse réutiliser cela au lieu de reconvertir des millions de valeurs à chaque requête.Comment créer un index pour la recherche avec caractères génériques sur une colonne Int dans SQL Server?

Comment puis-je implémenter cela?

Remarque: la modification de l'exigence métier de la recherche par caractère générique ou la modification de la colonne du schéma de base de données en caractère char ne sont pas des options dans ce cas.

À la votre!

Répondre

4

SQL Server ne dispose pas d'index fonctionnels, mais vous pouvez simuler le comportement en ajoutant un computed column qui convertit/convertit le type de données en VARCHAR/etc, puis indexez cette colonne calculée. Pourtant, l'avantage est discutable si vous générez le côté gauche d'une comparaison LIKE.