0/5 (1 avis)
Snippet vu 9 190 fois - Téléchargée 26 fois
----------------------------------------------------------------- USE [Strip3Prod] ----------------------------------------------------------------- -- Spécification du champ qui doit être indexé ----------------------------------------------------------------- DECLARE @NOM_CHAMP AS VARCHAR(50) SET @NOM_CHAMP = 'MonNomDeChamp' ----------------------------------------------------------------- DECLARE @SQLRequest AS VARCHAR(MAX) DECLARE @SQL AS VARCHAR(MAX) ----------------------------------------------------------------- -- Déclaration du Curseur de sélection ----------------------------------------------------------------- DECLARE TESTCURSEUR CURSOR FOR SELECT 'SELECT '''+ IDX.name +''' AS INDEX_NAME, '''+ OBJ.name +''' AS OBJECT_NAME, '''+ COL.name +''' AS COLUMN_NAME, COUNT(DISTINCT ['+ COL.name +']) NB_ROWS FROM ['+ SCH.name +'].['+ OBJ.name +'] ' FROM sys.index_columns IDXC INNER JOIN sys.objects OBJ ON IDXC.object_id = OBJ.object_id --AND OBJ.name = 'Document') INNER JOIN sys.schemas SCH ON SCH.schema_id = OBJ.schema_id INNER JOIN sys.indexes IDX ON (IDXC.object_id = IDX.object_id AND IDXC.index_id = IDX.index_id) INNER JOIN sys.columns COL ON (IDXC.column_id = COL.column_id AND OBJ.object_id = COL.object_id) WHERE (OBJ.type = 'U' OR OBJ.type = 'V') ORDER BY OBJ.name ----------------------------------------------------------------- -- Déclaration du Curseur sur la liste des Bases de données OPEN TESTCURSEUR FETCH NEXT FROM TESTCURSEUR INTO @SQLRequest WHILE (@@FETCH_STATUS >= 0) BEGIN SET @SQL = @SQLRequest PRINT @SQL -- EXECUTE (@SQL) FETCH NEXT FROM TESTCURSEUR INTO @SQLRequest END ----------------------------------------------------------------- -- Fermeture du Curseur CLOSE TESTCURSEUR -- Libération de la mémoire prise par le Curseur DEALLOCATE TESTCURSEUR -----------------------------------------------------------------
23 juin 2009 à 11:48
Ce code nous fait générer une requete par colonne se trouvant dans un index (n requete pour la meme colonne si elle se trouve dans n index) et nous donne le nombre de valeur distinct pour chaque colonne.
J'ai du mal a voir en quoi ces données sont utiles :
1) elles n'offre que peu de possibilité de calcul en ce qui concerne les statistiques de l'index
2) La maniere d'optenir celles-ci est fort complexe alors que les vues de gestion dynamique offrent beaucoup plus d'informations, plus utiles, incluant celles que l'ont peut déduir de celles que nous donne ce code, le tout à l'aide une requete sql unique (a l'aide d'une CTE dans les cas les plus difficiles).
Pourrais tu a l'occasion expliqué plus en détail les buts et interets de ce code ?
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.