2009-07-13 7 views
0

Existe-t-il un système SP ou dmv qui me permet de sélectionner des index dans ma base de données en fonction des colonnes et des noms de tables? Ce que j'essaye de faire est de laisser tomber des index basés sur des colonnes avec des types de données de chaîne pendant que je suis en train de modifier mes arrangements de classement.Sélection d'index basés sur les noms de colonne/table

Merci.

Répondre

3

Vous pouvez toujours déterminer les indices pour une colonne donnée et/ou d'une table en interrogeant les vues sys.indexes et sys.index_columns:

SELECT 
    i.Name 'Index Name', 
    OBJECT_NAME(i.object_ID) 'Table Name', 
    c.Name 'Column Name' 
FROM 
    sys.indexes i 
INNER JOIN 
    sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id 
INNER JOIN 
    sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id 
WHERE 
    c.name = 'Index column name'  -- this for a column name 
    -- OBJECT_NAME(i.OBJECT_ID) = 'Table Name' -- this for table name 

Marc

+0

brillant, merci! – super9

1

vous avez besoin de quatre vues système:

sys.indexes, sys.index_columns, sys.columns et sys.objects. sys.objects contient le nom de la table, sys.columns. contient l'ID d'objet de la table et le type de la colonne, sys.index_columns contient l'ID de la colonne présente dans les index et l'index, sys.indexes contient l'ID de l'index.

éditer: oui, sys.objects n'est pas nécessaire. Réservoirs @mark.

Questions connexes