Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

densité d'un index

7 réponses
Avatar
hugueslouz
bonjour,
Avec la commande DBCC SHOW_STATISTICS donne la densité de l'index.
Ma question comment inetepreter ce resultat ? faible ou forte?
sous forme 2.9411765E-3
merci de votre aide.
Hugueslouz

7 réponses

Avatar
Med Bouchenafa
La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une densité
de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté de
l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à une
valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant le
nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?

--
Bien cordialement
Med Bouchenafa





uld have a density of 0.001. An index on a bit column has a density of 0.5
because you divide one by the only two possible unique values in a bit
column. The smaller the density number is, the greater the selectivity.

The best numbers to use for density are the All Density numbers in the DBCC
SHOW_STATISTICS command output, not the Density number in the first result
that is produced.

"hugueslouz" wrote in message
news:
bonjour,
Avec la commande DBCC SHOW_STATISTICS donne la densité de l'index.
Ma question comment inetepreter ce resultat ? faible ou forte?
sous forme 2.9411765E-3
merci de votre aide.
Hugueslouz


Avatar
hugueslouz
Effectivement moi je vais savoir comment trouver la selectivité a partir de
la densité ou autre ligne de la commane DBCC SHOW_STATISTICS .
en fait je n'ai pas compris :
un index unique a une densité de 1/(Nombre de lignes)
ca veut dire quoi un ibndex unique?
je vosu remercie.


"Med Bouchenafa" a écrit :

La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une densité
de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté de
l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à une
valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant le
nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?

--
Bien cordialement
Med Bouchenafa





uld have a density of 0.001. An index on a bit column has a density of 0.5
because you divide one by the only two possible unique values in a bit
column. The smaller the density number is, the greater the selectivity.

The best numbers to use for density are the All Density numbers in the DBCC
SHOW_STATISTICS command output, not the Density number in the first result
that is produced.

"hugueslouz" wrote in message
news:
> bonjour,
> Avec la commande DBCC SHOW_STATISTICS donne la densité de l'index.
> Ma question comment inetepreter ce resultat ? faible ou forte?
> sous forme 2.9411765E-3
> merci de votre aide.
> Hugueslouz





Avatar
zoltix
Med Bouchenafa a écrit :
La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une densité
de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté de
l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à une
valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant le
nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?



si j'ai bien compris, avec un index unique : 1 table avec 1 row on aurait une densité de 1.
ce veut dire mauvaise performance mais comme il n'y a pas bcp de données ça ne pose pas problème.
Alors plus on a des rows dans une tables plus les performance s'améliore car la densité diminue mais taille augmente
et diminue les performances. (Donc on a toujours +- les même performances.)

J'ai bien compris ......?
Avatar
Richard Flouriot
>(Donc on a toujours +- les même performances.)


Oui, avec les torchons et les serviettes.... ;o)
Richard
"zoltix" a écrit dans le message de news:
45598da8$0$23360$
Med Bouchenafa a écrit :
La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une
densité de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté
de l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à
une valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant
le nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?



si j'ai bien compris, avec un index unique : 1 table avec 1 row on aurait
une densité de 1.
ce veut dire mauvaise performance mais comme il n'y a pas bcp de données
ça ne pose pas problème.
Alors plus on a des rows dans une tables plus les performance s'améliore
car la densité diminue mais taille augmente
et diminue les performances. (Donc on a toujours +- les même
performances.)

J'ai bien compris ......?



Avatar
Med Bouchenafa
Non, ce n'est pas exactement cela
Dans le cas que tu cites, l'optimiseur ne choisira pas cet index et il est
preferable de scanner la table par exemple
Comme je le disais dans le precedent message, tout est relatif
L'optimisateur va comparer, entre autres, les densités des differents index
possibles et choisir celui avec la plus faible

--
Bien cordialement
Med Bouchenafa

"zoltix" wrote in message
news:45598da8$0$23360$
Med Bouchenafa a écrit :
La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une
densité de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté
de l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à
une valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant
le nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?



si j'ai bien compris, avec un index unique : 1 table avec 1 row on aurait
une densité de 1.
ce veut dire mauvaise performance mais comme il n'y a pas bcp de données
ça ne pose pas problème.
Alors plus on a des rows dans une tables plus les performance s'améliore
car la densité diminue mais taille augmente
et diminue les performances. (Donc on a toujours +- les même
performances.)

J'ai bien compris ......?



Avatar
Med Bouchenafa
Je voulais dire par un index unique, un index dans toutes les valeurs sont
differentes comme une colonne avec identity par exemple. Il y aura autant de
valeurs differentes que de lignes dans la table

--
Bien cordialement
Med Bouchenafa
"hugueslouz" wrote in message
news:
Effectivement moi je vais savoir comment trouver la selectivité a partir
de
la densité ou autre ligne de la commane DBCC SHOW_STATISTICS .
en fait je n'ai pas compris :
un index unique a une densité de 1/(Nombre de lignes)
ca veut dire quoi un ibndex unique?
je vosu remercie.


"Med Bouchenafa" a écrit :

La densité est utilisée pour indiquer la selectivité.
Elle se calcule en divisant 1 par le nombre de valeurs distintictes
Ainsi, un index unique a une densité de 1/(Nombre de lignes)

Soit une table de 1000 lignes.
Pour un index unique, on aurait une densité de 1/1000 = 0,001
Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une
densité
de 1/2 = 0,5

Comme on le voit plus la densité est faible meilleure est la selectivté
de
l'index
Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
absolue par il y a tellement de facteurs qui rentrent en ligne de compte
Le choix devrait toujours se faire par comparaison et non par rapport à
une
valeur absolue

Dans mon exemple, j'aurais eu une densitè différente juste en changeant
le
nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?

--
Bien cordialement
Med Bouchenafa





uld have a density of 0.001. An index on a bit column has a density of
0.5
because you divide one by the only two possible unique values in a bit
column. The smaller the density number is, the greater the selectivity.

The best numbers to use for density are the All Density numbers in the
DBCC
SHOW_STATISTICS command output, not the Density number in the first
result
that is produced.

"hugueslouz" wrote in message
news:
> bonjour,
> Avec la commande DBCC SHOW_STATISTICS donne la densité de l'index.
> Ma question comment inetepreter ce resultat ? faible ou forte?
> sous forme 2.9411765E-3
> merci de votre aide.
> Hugueslouz







Avatar
hugueslouz
Si je peux reformuler ma question comment on peut determiner la selectivite
(nbre de lignes parcouru sur nbre total de lignes dans un select ) d'un index
à partir de des infos données par DBCC SHOW_STATISTICS .
Exemple pris sur l'aide en ligne :

L'exemple suivant affiche les informations de statistiques pour l'index
UPKCL_auidind de la table authors.

USE pubs
DBCC SHOW_STATISTICS (authors, UPKCL_auidind)
GO

Voici le jeu de résultats obtenu :

Statistics for INDEX 'UPKCL_auidind'.
Updated Rows Rows Sampled Steps Density
--------------------- ------ -------------- ------- --------------
Mar 1 2000 4:58AM 23 23 23 4.3478262E-2

Average key length
------------------
11.0

(1 row(s) affected)

All density Average Length Columns



------------------------ ------------------------ ----------------
4.3478262E-2 11.0 au_id

(1 row(s) affected)

RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS
------------ ---------- ------- ------------------- --------------
172-32-1176 0.0 1.0 0 0.0
213-46-8915 0.0 1.0 0 0.0
238-95-7766 0.0 1.0 0 0.0
267-41-2394 0.0 1.0 0 0.0
274-80-9391 0.0 1.0 0 0.0
341-22-1782 0.0 1.0 0 0.0
409-56-7008 0.0 1.0 0 0.0
427-17-2319 0.0 1.0 0 0.0
472-27-2349 0.0 1.0 0 0.0
486-29-1786 0.0 1.0 0 0.0
527-72-3246 0.0 1.0 0 0.0
648-92-1872 0.0 1.0 0 0.0
672-71-3249 0.0 1.0 0 0.0
712-45-1867 0.0 1.0 0 0.0
722-51-5454 0.0 1.0 0 0.0
724-08-9931 0.0 1.0 0 0.0
724-80-9391 0.0 1.0 0 0.0
756-30-7391 0.0 1.0 0 0.0
807-91-6654 0.0 1.0 0 0.0
846-92-7186 0.0 1.0 0 0.0
893-72-1158 0.0 1.0 0 0.0
899-46-2035 0.0 1.0 0 0.0
998-72-3567 0.0 1.0 0 0.0

(23 row(s) affected)

et la note cite :

Les résultats renvoyés indiquent la sélectivité d'un index (plus la densité
renvoyée est faible, plus la sélectivité est élevée) et fournissent la base
qui permet de déterminer si un index est utile ou non à l'optimiseur de
requête. Les résultats renvoyés se basent sur les étapes de distribution de
l'index.

comment donc deteminer cette selectivité?

je vous remercie.

"Med Bouchenafa" a écrit :

Non, ce n'est pas exactement cela
Dans le cas que tu cites, l'optimiseur ne choisira pas cet index et il est
preferable de scanner la table par exemple
Comme je le disais dans le precedent message, tout est relatif
L'optimisateur va comparer, entre autres, les densités des differents index
possibles et choisir celui avec la plus faible

--
Bien cordialement
Med Bouchenafa

"zoltix" wrote in message
news:45598da8$0$23360$
> Med Bouchenafa a écrit :
>> La densité est utilisée pour indiquer la selectivité.
>> Elle se calcule en divisant 1 par le nombre de valeurs distintictes
>> Ainsi, un index unique a une densité de 1/(Nombre de lignes)
>>
>> Soit une table de 1000 lignes.
>> Pour un index unique, on aurait une densité de 1/1000 = 0,001
>> Pour un index de type bit (Oui/Non, 1/0, Vrai/Faux), on aurait une
>> densité de 1/2 = 0,5
>>
>> Comme on le voit plus la densité est faible meilleure est la selectivté
>> de l'index
>> Comme souvent le cas, dans ce genre de questions, il n'a pas de règle
>> absolue par il y a tellement de facteurs qui rentrent en ligne de compte
>> Le choix devrait toujours se faire par comparaison et non par rapport à
>> une valeur absolue
>>
>> Dans mon exemple, j'aurais eu une densitè différente juste en changeant
>> le nombre de lignes. Est ce que mon index est mauvais ou bon pour autant?
>>
> si j'ai bien compris, avec un index unique : 1 table avec 1 row on aurait
> une densité de 1.
> ce veut dire mauvaise performance mais comme il n'y a pas bcp de données
> ça ne pose pas problème.
> Alors plus on a des rows dans une tables plus les performance s'améliore
> car la densité diminue mais taille augmente
> et diminue les performances. (Donc on a toujours +- les même
> performances.)
>
> J'ai bien compris ......?
>