IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Index de type full-text


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 126
    Par défaut Index de type full-text
    Bonjour.
    J'utilise la requête suivante, afin de lister les index d'une table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT 
    	sys.columns.name AS COLUMN_NAME,
    	sys.indexes.is_primary_key,
    	sys.indexes.is_unique
    FROM 
    	sys.index_columns 
    	INNER JOIN sys.objects ON (index_columns.object_id = sys.objects.object_id AND sys.objects.name IN ('MaTable')) 
    	INNER JOIN sys.schemas ON sys.schemas.schema_id = sys.objects.schema_id 
    	INNER JOIN sys.indexes ON (sys.index_columns .object_id = sys.indexes.object_id AND sys.index_columns.index_id = sys.indexes.index_id)
    	INNER JOIN sys.columns ON (sys.index_columns.column_id = sys.columns.column_id AND sys.objects.object_id = sys.columns.object_id)
    WHERE 
    	sys.objects.type = 'U' OR sys.objects.type = 'V'
    ORDER BY
    	sys.objects.name ASC
    Resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Id	1	1
    Undx	0	1
    Ndx	0	0
    FTxt	0	1
    Cette requête me renvoi parfaitement la liste des index de "MaTable".
    Par contre, je ne parviens pas à trouver la colonne qui me permette de différencier les index Full-text des autres.

    Merci de votre aide.

    Cordialement.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Les indexes de texte intégral et les colonnes faisant partie des indexes de texte intégral sont répertoriés dans d'autres tables systèmes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sys.fulltext_indexes
    sys.fulltext_index_columns
    etc..
    Exemple : La requête ci-dessous liste les noms des colonnes et tables des indexes de texte intégrale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT OBJECT_NAME(ic.object_id) table_name, c.name  column_name  
    FROM sys.fulltext_index_columns  ic
    INNER JOIN sys.columns c 
      ON ic.object_id = c.object_id 
      AND ic.column_id = c.column_id
    GO
    A+

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Après réflexion, et sauf erreur de ma part, pour une table donnée, une colonne qui participe à un index classique, ne participe pas forcément à l'unique index de texte intégrale de la table. Et inversement une colonne qui participe à l'unique index de texte intégrale d'une table ne participe pas forcément à un des indexes classiques de la table.

    Donc finalement ta question est mal posée et ne peut être formulée ainsi !

    Le script, ci-dessous, que j'ai concocté est incomplet. Il ne montre pas les éventuelles colonnes qui participent à l'unique index de texte intégrale mais qui ne participent à aucun indexes classiques !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT o.name As Table_Name, o.type, 
           i.name as index_name, 
           c.name AS Column_Name,
           i.is_primary_key,
           i.is_unique	 , 	   
           CAST((case when ftic.object_id iS NULL then 0 ELSE 1 END) AS bit) as is_fulltext
    FROM sys.index_columns ic 
    INNER JOIN sys.objects o 
      ON ic.object_id = o.object_id 
      AND o.name  = 'ProductReview' 
    LEFT OUTER JOIN sys.fulltext_index_columns ftic  
      ON ftic.object_id = ic.object_id 
      and ftic.column_id = ic.column_id 
    INNER JOIN sys.schemas s
      ON s.schema_id = o.schema_id 
    INNER JOIN sys.indexes i  
      ON ic.object_id = i.object_id 
      AND ic.index_id = i.index_id
    INNER JOIN sys.columns  c  
      ON ic.column_id = c.column_id 
      AND o.object_id = c.object_id    
    WHERE o.type In ('U', 'V')
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Table_Name	type	index_name	Column_Name	is_primary_key	is_unique	is_fulltext
    ProductReview	U 	PK_ProductReview_ProductReviewID	ProductReviewID	1	1	0
    ProductReview	U 	IX_ProductReview_ProductID_Name	ProductID	0	0	0
    ProductReview	U 	IX_ProductReview_ProductID_Name	ReviewerName	0	0	0
    ProductReview	U 	IX_ProductReview_ProductID_Name	Comments	0	0	1
    Remarque : La colonne "Comments" ci-dessus, apparaît par chance parce qu'elle fait partie des colonnes INCLUDE (is_Included_Column) d'un index classique (IX_ProductReview_ProductID_Name), sinon elle ne ferait pas partie du résultat !
    A+

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Cela dépend de la version. Sous 2008 (IFTS), pour voir les colonnes indexées, faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT S.name AS TABLE_SCHEMA, T.name AS TABLE_NAME,
           C.name AS COLUMN_NAME, CT.name AS DOC_TYPE_COLUMN_NAME
    FROM   sys.fulltext_index_columns AS FTic
           INNER JOIN sys.tables AS T
                 ON FTic.object_id = T.object_id
           INNER JOIN sys.schemas AS S
                 ON T.schema_id = S.schema_id
           INNER JOIN sys.columns AS C
                 ON FTic.object_id = C.object_id 
                 AND FTic.column_id = C.column_id
           LEFT OUTER JOIN sys.columns AS CT
                 ON FTic.object_id = CT.object_id 
                    AND  FTic.type_column_id = CT.column_id
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Requete type FULL text match against
    Par tidou95220 dans le forum Requêtes
    Réponses: 0
    Dernier message: 11/10/2011, 16h00
  2. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  3. index de type Full text
    Par krest dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/02/2008, 21h30
  4. Réponses: 2
    Dernier message: 23/08/2007, 14h04
  5. Index full text sur champs multiples
    Par manu_71 dans le forum Outils
    Réponses: 6
    Dernier message: 22/02/2007, 00h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo