J'ai une table qui n'a pas de clé primaire. les données sont déjà là. J'ai fait un index non groupé. mais lorsque j'exécute une requête, le plan d'exécution réel n'indique pas l'analyse d'index. Je pense que l'index non clusterisé ne fonctionne pas. Quelle pourrait être la raison. S'il vous plaît aidez-moiIndex non clusterisé ne fonctionnant pas SQL Server
Répondre
Tout d'abord - pourquoi n'y a-t-il pas une clé primaire ??S'il n'a pas de clé primaire, ce n'est pas une table - il suffit d'en ajouter une! Cela aidera sur tant de niveaux ....
Deuxièmement: même si vous avez un index, l'optimiseur de requêtes SQL Server examinera toujours votre requête pour décider s'il est logique d'utiliser l'index (ou non). Si vous sélectionnez toutes les colonnes et une grande partie des lignes, l'utilisation d'un index est inutile.
Donc, les choses à éviter sont:
SELECT * FROM dbo.YourTable
est presque garanti pas d'utiliser les indices- si vous ne disposez pas d'une bonne
WHERE
clause dans votre requête - si votre index est sur une colonne qui ne sélectionne pas vraiment un petit pourcentage de données; un index sur une colonne booléenne ou une colonne
Gender
avec au plus trois valeurs différentes ne permettent pas du tout
Sans savoir beaucoup plus sur la structure de votre table, les données contenues dans ces tableaux, le nombre de lignes , et quel genre de requêtes que vous exécutez, personne ne peut vraiment répondre à votre question - il est juste trop large ....
Mise à jour: si vous voulez créer un index ordonné en clusters sur une table qui est différent à partir de votre clé primaire, procédez comme suit:
1) Tout d'abord, concevez votre table 2) Ensuite, ouvrez le concepteur d'index - créez un nouvel index en cluster sur une colonne de votre choix. Rappelez-vous - ce n'est pas la clé primaire!
3) Après cela, vous pouvez mettre votre clé primaire sur la colonne ID
- il va créer un index, mais cet indice est pas cluster!
+1. Battez-moi! Je lui donnerais +5 pour "pourquoi n'y a-t-il pas une clé primaire ??" si je pouvais –
merci marc_s –
Sans avoir plus d'informations je pense que la raison est que la table est trop petit pour un indice cherchent à valoir la peine. Si votre table contient moins de quelques milliers de lignes, SQL Server choisira presque toujours de faire une analyse de table/index indépendamment des index de cette table simplement parce qu'une analyse d'index est en fait plus rapide. Une analyse d'index en elle-même n'indique pas nécessairement un problème de performances - la requête est-elle réellement lente?
table a environ 2000 lignes. Nous pouvons seulement faire un index clusterisé sur la clé primaire. mais si je crée l'index en utilisant le concepteur de table, il y a une propriété Create as Clustered. Qu'est-ce que c'est? La colonne sur laquelle je fais l'index n'est pas primaire ... –
@Mohan [ce lien] (http://www.sql-server-performance.com/articles/per/index_data_structures_p1.aspx) est une bonne introduction article sur les index clusterisés - en termes simples, l'index cluster détermine l'ordre dans lequel les enregistrements sont stockés. Notez que l'index clusterisé (les tables peuvent en contenir au maximum) et la clé primaire sont des concepts complètement différents et servent des objectifs différents. des cas les mêmes colonnes sont utilisées pour les deux. – Justin
@Mohan Aussi, 2000 lignes est probablement assez petit pour faire un scan de table/index le plan de requête le plus efficace (selon la taille des colonnes) - à moins que la requête soit lente, je ne m'inquiéterais pas trop. – Justin
- 1. SQL Server - Tables partitionnées et index clusterisé?
- 2. Index non clusterisé dans le serveur SQL
- 3. Index clusterisé/non clusterisé sur une colonne d'identificateur unique dans SQL Server
- 4. Index non clusterisé avec include vs presque identique Index non clusterisé sans; Couverture multiple requête
- 5. SQL Server: index clusterisé sur datetime, ASC ou DESC
- 6. Quelle est la différence entre un index clusterisé et un index non clusterisé?
- 7. L'index non clusterisé sur une colonne Index clusterisé améliore les performances?
- 8. Index SQL Server
- 9. Un mauvais index clusterisé recherche la performance?
- 10. Index SQL Server
- 11. Les index SQL Server ne sont pas utiles
- 12. SQL Server et index
- 13. Index SQL Server Scripting
- 14. CREATE INDEX dans SQL Server 2008 ne résulte pas en "index visible"
- 15. SQL dynamique ne fonctionnant pas comme prévu
- 16. Sur une table Heap, qu'utilise un index non clusterisé comme pointeur sur une ligne?
- 17. Composite Index - SQL Server
- 18. Optimisation des index SQL Server
- 19. Index par rapport à clé unique dans SQL Server 2008
- 20. Vitesse de requête de l'index clusterisé SQL Server 2005
- 21. Créer une clé primaire mysql sans index clusterisé?
- 22. Utiliser INDEX dans SQL Server
- 23. SQL Server: Modification d'un index principal en cluster sur un non-cluster
- 24. Index filtrés SQL Server 2008
- 25. Sql Server 2005 requête novice
- 26. Index varchar sur MS SQL Server 2005
- 27. Indexation dans SQL Server
- 28. Ruby on Rails Plugin étranger ne fonctionnant pas pour SQL Server
- 29. SQL Server Management Studio ne démarre pas
- 30. jQuery jqGrid TreeGrid ne fonctionnant pas correctement
Vous devez fournir plus de détails!Il existe plusieurs raisons pour lesquelles l'optimiseur de requête peut décider d'ignorer l'index (si la table est très petite, si la clé d'index utilisée n'est pas suffisamment sélective, si la requête inclut des prédicats supplémentaires, etc.). Créer un script de table), le script de création d'index, la requête et le plan de requête, et aussi sans certaines statistiques sur les données, il sera très difficile de vous aider au-delà des considérations générales. – mjv