Comment utiliser les index dans la requête SQL
Eh bien, je suis nouveau à ce genre de choses ..j'ai créé un index dans mon SP au début comme suit
Create Index index_fab
ON TblFab (Fab_name)
Maintenant, j'ai une requête en vertu de la présente
select fab_name from TblFab where artc = 'x' and atelr = 'y'.
maintenant, il Est nécessaire d'utiliser ce nom d'index dans la clause select, ou il va automatiquement utilisé pour accélérer les requêtes
Dois-je utiliser quelque chose comme
select fab_name from TblFab WITH(INDEX(index_fab)) where artc = 'x' and atelr = 'y'.
ou de toute autre méthode pour utiliser cet indice dans la requête
et aussi comment utiliser les index si nous sommes à l'aide de rejoindre sur ce tableau?
OriginalL'auteur omkar patade | 2013-03-21
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, voulez-vous dire que vous êtes la création de l'index dans une procédure stockée? C'est une mauvaise idée - si vous exécutez la procédure stockée deux fois, ce sera un échec, car l'index existe déjà.
Deuxièmement, votre requête ne pas utiliser la colonne mentionné dans l'index, de sorte qu'il n'aura pas d'impact.
Troisièmement, comme JodyT écrit, l'analyseur de requêtes (SQL Serveur lui-même) va décider de l'index à utiliser; il est presque certainement mieux à ce que vous êtes.
Enfin, pour accélérer la requête que vous mentionnez, créer un index sur les colonnes de l'artc et atelr.
OriginalL'auteur Neville Kuyt
L'Optimiseur de Requête de SQL Server de décider si l'indice est adapté pour la requête. Vous ne pouvez pas
force
à utiliser un index spécifique. Vous pouvez donner des conseils sur lesquels vous souhaitez utiliser, mais ce ne sera pas une garantie qu'il va l'utiliser.OriginalL'auteur JodyT
Que les autres gens répondu à votre question pour vous aider à mieux comprendre, à mon avis, vous devez d'abord comprendre pourquoi vous avez besoin d'utiliser des index. Comme nous savons que les indices d'augmenter les performances , ils peuvent aussi causer des problèmes de performance. Il est préférable de savoir quand vous avez besoin d'utiliser des index, pourquoi vous avez besoin d'utiliser des index au lieu de comment utiliser les index.
Vous pouvez lire presque tous les détails de ici .
Concernant votre exemple, votre requête de l'indice n'a pas d'impact. Parce qu'il n'a pas la colonne mentionné dans votre requête de la clause where.
Vous pouvez également essayer:
CREATE INDEX yourIndexName
)ON yourTableName (column_you_are_looking_for1,column_you_are_lookingfor2
Également bon à savoir: Si n'existe pas d'index sur une table, un tableau d'analyse doit être effectuée pour chaque table référencée dans une base de données de la requête. La plus grande de la table, plus une analyse de la table prend une analyse de table, exige que chaque ligne de la table pour être accessible de manière séquentielle. Bien que l'analyse d'une table peut être plus efficace pour une requête complexe qui nécessite le plus de lignes dans une table, d'une requête qui ne retourne que certaines lignes de la table une analyse d'index peuvent accéder à des lignes de la table de manière plus efficace. (source de ici )
Espère que cette aide.
Si c'est la seule erreur que vous pourriez trouver en tant qu'ancien professeur d'anglais, je suis bien content que des cours de langue de haut-parleur/écrivain 😀
OriginalL'auteur curiousBoy
Un index doit être utilisé par défaut si vous exécutez une requête sur la table à l'aide.
Mais je pense que dans la requête que vous avez posté, il ne sera pas utilisé, parce que vous n'êtes pas le filtrage de vos données par la colonne de la création de votre index.
Je pense que vous auriez à créer l'index pour l'artc et atelr colonnes à profit.
Pour voir si votre index est utilisé de prendre un coup d'oeil à l'exécution du plan qui a été utilisé dans le SQL server Management Studio.
plus d'infos sur les indices: utiliser l'index luc
OriginalL'auteur DrCopyPaste
Vous n'avez pas besoin d'inclure l'indice dans votre requête. Son géré par sql server. Aussi, vous n'avez pas besoin d'inclure l'indice de choisir si vous souhaitez faire adhérer à cette table. Espérons que c'est clair.
OriginalL'auteur DevelopmentIsMyPassion
Vous êtes indice d'utilisation "Fab_name" colonne, vous n'avez pas de filtre dans votre instruction select, il est donc d'aucune utilité.
Puisque vous êtes nouveau à cela, vous pourriez bénéficier d'un index comme ceci :
ou peut-être comme ce
...oui il y a beaucoup de subtilités à apprendre.
OriginalL'auteur Serge
Pour de meilleures performances:
Liste les colonnes, tableaux, qui sont fréquemment utilisés,
Créer des index sur les tables/colonnes.
OriginalL'auteur Nrusingha
Si l'indice est correctement mis en place, l'optimiseur de l'utilisera automatiquement. Par configuré correctement, je veux dire qu'il est suffisamment sélectif, peut effectivement aider à la requête etc. Lire à ce sujet. Vous pouvez vérifier par vous-même si l'indice est utilisé à l'aide de "inclure le plan d'exécution réel" option dans ssms.
Il est généralement déconseillé de l'utiliser avec d'indice (()) conseils et de laisser l'optimiseur de a décidé par lui-même, à l'exception de cas très particuliers quand vous savez mieux ;).
OriginalL'auteur Adam Luniewski