OVH Cloud OVH Cloud

optimisation de conception de base

5 réponses
Avatar
coolben
Bonjour,

Je dois faire migrer une datawarhouse et en meme temps l'optimiser.
Pour l'optimiser, je dois tout re-concevoir la base. Lors de la conception,
plusieurs choix se pose et je n'arrive pas a déterminer lesquelles sont les
meilleurs et je n'ai pas la possibilité de tester sur ce SGBD.

Voici les deux principales questions que je me pose:

1: J'ai une table personne contenant 270 000 tuples et beaucoup de champs
(24).
Une autre table (utilisation) comporte seulement un champs id_personne (clé
etrangere de la table personne) et 6 booleens.
Es ce utile de laisser les deux tables séparées ou vaut il mieux les
fusionner sachant que les donnees de la table (utilisation) ne sont utiles
que pour 10% des personnes de la table personne ce qui augmenterai encore
plus la taille de la table fusionnée

2: Es ce qu'un clé primaire composé de type entier avec l'option auto
incrmente est plus performant qu'un champs de varchar(8)

merci d'avance pour votre aide

5 réponses

Avatar
Philippe T [MS]
Bonjour,

Problème 1:
Il ne faut pas réfléchir en ce sens. Avez vous une liaison de type 1:1 entre
vos deux tables ? Dans ces conditions, je vous conseils de fusionner vos
deux tables car même si cela rajoute des champs, cela permettra d'optimiser
les requêtes l'utilisant (pas de jointure à faire).

Problème 2:
Le plus performant est sans aucun doute un entier auto-incrémental.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"coolben" wrote in message
news:
Bonjour,

Je dois faire migrer une datawarhouse et en meme temps l'optimiser.
Pour l'optimiser, je dois tout re-concevoir la base. Lors de la


conception,
plusieurs choix se pose et je n'arrive pas a déterminer lesquelles sont


les
meilleurs et je n'ai pas la possibilité de tester sur ce SGBD.

Voici les deux principales questions que je me pose:

1: J'ai une table personne contenant 270 000 tuples et beaucoup de champs
(24).
Une autre table (utilisation) comporte seulement un champs id_personne


(clé
etrangere de la table personne) et 6 booleens.
Es ce utile de laisser les deux tables séparées ou vaut il mieux les
fusionner sachant que les donnees de la table (utilisation) ne sont utiles
que pour 10% des personnes de la table personne ce qui augmenterai encore
plus la taille de la table fusionnée

2: Es ce qu'un clé primaire composé de type entier avec l'option auto
incrmente est plus performant qu'un champs de varchar(8)

merci d'avance pour votre aide


Avatar
coolben
Bonjour et merci de m'avoir répondu

Si je comprend bien votre reflexion, toutes les tables lié par une liaison
1:1 doit etre fusionnées.
Es ce que l'ajoue d'une demi douzaine de champs varchar(8) ne risque pas
d'allourdir la table principale sachant que ces donnes ne sont utiles que que
pour un tiers des tuples et que beaucoup de requetes non pas besoin des
donnees rajoutées.

cordialement,


"Philippe T [MS]" a écrit :

Bonjour,

Problème 1:
Il ne faut pas réfléchir en ce sens. Avez vous une liaison de type 1:1 entre
vos deux tables ? Dans ces conditions, je vous conseils de fusionner vos
deux tables car même si cela rajoute des champs, cela permettra d'optimiser
les requêtes l'utilisant (pas de jointure à faire).

Problème 2:
Le plus performant est sans aucun doute un entier auto-incrémental.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"coolben" wrote in message
news:
> Bonjour,
>
> Je dois faire migrer une datawarhouse et en meme temps l'optimiser.
> Pour l'optimiser, je dois tout re-concevoir la base. Lors de la
conception,
> plusieurs choix se pose et je n'arrive pas a déterminer lesquelles sont
les
> meilleurs et je n'ai pas la possibilité de tester sur ce SGBD.
>
> Voici les deux principales questions que je me pose:
>
> 1: J'ai une table personne contenant 270 000 tuples et beaucoup de champs
> (24).
> Une autre table (utilisation) comporte seulement un champs id_personne
(clé
> etrangere de la table personne) et 6 booleens.
> Es ce utile de laisser les deux tables séparées ou vaut il mieux les
> fusionner sachant que les donnees de la table (utilisation) ne sont utiles
> que pour 10% des personnes de la table personne ce qui augmenterai encore
> plus la taille de la table fusionnée
>
> 2: Es ce qu'un clé primaire composé de type entier avec l'option auto
> incrmente est plus performant qu'un champs de varchar(8)
>
> merci d'avance pour votre aide





Avatar
Fred BROUARD
le problème,ne se pose pas en terme de mieux ou moins bien, mais en terme de
volumétrie et de performances attendues.

Donc : combien de ligne dans 6 mois, 1 an, 3 ans, ... ?
Quelle taille de ligne dans la table ?
Quelle taux de NULL dans les données ?
Etc...

A +



coolben a écrit:
Bonjour et merci de m'avoir répondu

Si je comprend bien votre reflexion, toutes les tables lié par une liaison
1:1 doit etre fusionnées.
Es ce que l'ajoue d'une demi douzaine de champs varchar(8) ne risque pas
d'allourdir la table principale sachant que ces donnes ne sont utiles que que
pour un tiers des tuples et que beaucoup de requetes non pas besoin des
donnees rajoutées.

cordialement,


"Philippe T [MS]" a écrit :


Bonjour,

Problème 1:
Il ne faut pas réfléchir en ce sens. Avez vous une liaison de type 1:1 entre
vos deux tables ? Dans ces conditions, je vous conseils de fusionner vos
deux tables car même si cela rajoute des champs, cela permettra d'optimiser
les requêtes l'utilisant (pas de jointure à faire).

Problème 2:
Le plus performant est sans aucun doute un entier auto-incrémental.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"coolben" wrote in message
news:

Bonjour,

Je dois faire migrer une datawarhouse et en meme temps l'optimiser.
Pour l'optimiser, je dois tout re-concevoir la base. Lors de la



conception,

plusieurs choix se pose et je n'arrive pas a déterminer lesquelles sont



les

meilleurs et je n'ai pas la possibilité de tester sur ce SGBD.

Voici les deux principales questions que je me pose:

1: J'ai une table personne contenant 270 000 tuples et beaucoup de champs
(24).
Une autre table (utilisation) comporte seulement un champs id_personne



(clé

etrangere de la table personne) et 6 booleens.
Es ce utile de laisser les deux tables séparées ou vaut il mieux les
fusionner sachant que les donnees de la table (utilisation) ne sont utiles
que pour 10% des personnes de la table personne ce qui augmenterai encore
plus la taille de la table fusionnée

2: Es ce qu'un clé primaire composé de type entier avec l'option auto
incrmente est plus performant qu'un champs de varchar(8)

merci d'avance pour votre aide










--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
coolben
bonjour et merci de m'avoir répondu

Je comprend bien que les donnees de cette datawarhouse sont ammenées à
évoluer et que pour le moment on ne peut pas prédire comment cela va se
passer. Mon principal probleme est theorique. Je pensais initialement qu'il
etait plus rapide a interoger deux tables avec une jointure qu'une seule qui
contient les deux tables avec des donnees par defaut en plus inutile pour
d'autre.

Es ce que le fait de pouvoir mettre à null les champs des donnes inutilisées
permet d'augmenter la vitesse des requetes ?
Sauriez vous ou je pourrais trouver une telle documentation sur internet ?

cordialement.


"Fred BROUARD" a écrit :

le problème,ne se pose pas en terme de mieux ou moins bien, mais en terme de
volumétrie et de performances attendues.

Donc : combien de ligne dans 6 mois, 1 an, 3 ans, ... ?
Quelle taille de ligne dans la table ?
Quelle taux de NULL dans les données ?
Etc...

A +



Avatar
Philippe T [MS]
Bonjour,

Moins il y a de jointure et meilleur c'est si les indexes sont bien
positionnés.

Enfin, il peut y avoir des exceptions mais c'est une théorie générale.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"coolben" wrote in message
news:
bonjour et merci de m'avoir répondu

Je comprend bien que les donnees de cette datawarhouse sont ammenées à
évoluer et que pour le moment on ne peut pas prédire comment cela va se
passer. Mon principal probleme est theorique. Je pensais initialement


qu'il
etait plus rapide a interoger deux tables avec une jointure qu'une seule


qui
contient les deux tables avec des donnees par defaut en plus inutile pour
d'autre.

Es ce que le fait de pouvoir mettre à null les champs des donnes


inutilisées
permet d'augmenter la vitesse des requetes ?
Sauriez vous ou je pourrais trouver une telle documentation sur internet ?

cordialement.


"Fred BROUARD" a écrit :

> le problème,ne se pose pas en terme de mieux ou moins bien, mais en


terme de
> volumétrie et de performances attendues.
>
> Donc : combien de ligne dans 6 mois, 1 an, 3 ans, ... ?
> Quelle taille de ligne dans la table ?
> Quelle taux de NULL dans les données ?
> Etc...
>
> A +
>