je le tableau suivant avec des millions de lignesCombien de champs à inclure dans un index SQL
+----+----------+-----------+--------+-------+-------------+------------------+
| ID | ClientID | ProjectID | Status | Note | AccountOwner| + 7 more fields |
+----+----------+-----------+--------+-------+-------------+------------------+
avec des indices sur ID (clusted) et ClientID (non groupés)
Je suis en train pour réduire le temps d'exécution en utilisant des colonnes INCLUDE sur l'index ClientID. J'ai plusieurs requêtes pour ce tableau, mais deux plus courantes sont:
SELECT ID, ClientID, ProjectID, Status WHERE ClientID = 4987
et
SELECT ID, ClientID, AccountOwner, + 5 more fields WHERE ClientID = 4987
Pour utiliser la INCLUDE fonction pour couvrir les deux requêtes, je devrais inclure 8 ou 9 champs sur l'index ClientID. Lors des tests, le temps de requête est réduit de 20 secondes à 2, de sorte que la fonctionnalité semble être ce dont j'ai besoin. Le problème que j'ai est qu'il semble que ce soit trop de champs mais semble nécessaire pour couvrir les deux cas d'utilisation courants et je ne sais pas assez comment cela fonctionne en interne pour savoir si c'est une bonne idée ou non. Est-ce trop de champs? Y at-il une autre caractéristique à utiliser ou un moyen de tester et de voir l'impact d'avoir autant de champs sur le INCLUDE?
Edit: Je ne demande pas de créer un index sur deux champs, je demande sur l'utilisation de la fonction d'un index (http://msdn.microsoft.com/en-us/library/ms190806.aspx)
La seule chose que vous cherchez ici est ClientID. –
@SeanLange Oui mais récupérer les autres données sur la table provoque une autre recherche et me ralentit – bugtussle