Comment répertorier les tables sans index dans ma base de données SQL 2008? P>
Je veux le nom du schéma et le nom de la table. P>
5 Réponses :
select shema = s.name, table_name = o.name from sys.objects o join sys.schemas s on o.schema_id = s.schema_id where type = 'U' and not exists (select i.index_id from sys.indexes i where i.type <> 0 --ignore default heap index row and o.object_id = i.object_id ) Edit: I have updated the SQL to include the Schema name as requested. (Note I had to sys.objects instead of sysobjects to cater for schemas that were introduced in SQL 2005)The catalog tables are documented in the SQL Server documentation, see this link. This FAQ contains more samples and might also be useful.Note that these are system tables and can change between SQL server versions, where possible rather use the system table-independent views called Information Schema Views.
Comment puis-je obtenir le schéma pour ces objets?
Ils sont toujours valables en 2005/2008 comme des vues «compatibilité». J'ai posté ma propre version qui utilise des objets système 2005/2008
@Raj Plus, j'ai mis à jour ma réponse avec le nom du schéma comme demandé
@Nick Kavadias, je suis d'accord, je suis d'accord sur les vues "compatibilité" sont toujours valides mais ne contient pas les informations requises (Détails du schéma) que Raj sont après.
En plus de la suggestion de @philip Fourie, vous voudrez peut-être réfléchir à quels index à créer. P>
Une fois que vous avez accès à vos données, SQL Server 2008 conserve une trace des endroits où il pense que les indices seront utiles (il se réfère à ceux-ci comme «index manquants». Il y a une main remplie de nouvelles vues gérées dynamiques qui peuvent montrer ces index manquants et quelques informations sur eux. P>
de MSQLTIPS : P>
- sys.dm_db_missing_index_détails - renvoie des informations détaillées sur un index manquant li>
- sys.dm_db_missing_index_group_stats - renvoie des informations résumées sur les groupes d'index manquants li>
- sys.dm_db_missing_index_groups - renvoie des informations sur un groupe spécifique d'index manquants li>
- sys.dm_db_missing_index_columns (index_handle) - renvoie des informations sur les colonnes de table de base de données manquantes pour un index. Ceci est une fonction et nécessite que l'index_handle soit transmis. LI> ul> blockQuote>
Cela devrait couvrir ce que vous recherchez. C'est-à-dire des tables qui sont des tas (aucun index en cluster) et ne possèdent aucun index non en cluster. Il utilise le nouveau système. Objets de table utilisés en 2005/2008.
De plus, vous souhaitez probablement rechercher des tables qui ont un index en cluster, mais n'ont pas d'index non clusters (c'est la 2e partie de la déclaration que j'ai laissée commentée. p>
Voici un exemple:
Ce code donne tous les détails sur les index de toutes les tables: