Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2004, 14h29   #1
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Par défaut [BCB5][IB6]Est ce possible ??

Bonjour,

Juste une petite question. Il me semble avoir remarqué qu'apres avoir donné un nom à mes clés primaires, mes uniques et mes clés référentiels mon application semble aller plus vite, est ce possible ou je reve :

Merci d'avance.
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2004, 14h46   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui si vous les avez nommées Speed_Key_XXXXXX

Non sérieusement, c'est une impression que vous avez...

Les clé primaires, étrangères et index (unique ou pas) ont tous un nom, soit c'est interbase qui l'a donné automatiquement soit c'est vous qui l'avez précisé lors des déclarations.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2004, 14h57   #3
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
C'est bien ce que je pensais!! Mais bon je suis en train d'effectuer des tests et il semblerait quand même quand donnant un nom à la clé primaire mon traitement semblerait plus rapide. Bon si vous me certifiez que ce n'est pas possible je vous crois sur parole.

Bonne journée et merci.
A+
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2004, 15h22   #4
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Pour moi lorsque j'effectue la creation de ma table de cette maniere:
Code :
1
2
3
4
CREATE TABLE T_FOURNISSEUR 
 (FRN_NOM     CHAR(16) NOT NULL,  
  FRN_PRENOM  CHAR(16) NOT NULL, 
  CONSTRAINT PK_FRN PRIMARY KEY (FRN_NOM, FRN_PRENOM))
au lieu de celle ci
Code :
1
2
3
4
CREATE TABLE T_FOURNISSEUR 
 (FRN_NOM     CHAR(16) NOT NULL,  
  FRN_PRENOM  CHAR(16) NOT NULL, 
  PRIMARY KEY (FRN_NOM, FRN_PRENOM))
il me semble que les performances sont meilleurs.

A+.
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2004, 17h00   #5
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Comment mesurez vous les différences de performances ?

Car votre deuxième méthode génère une contrainte de type CLE primaire exactement comme la première méthode sauf que c'est interbase qui choisis le nom à votre place. Ce nom est du type INTEG_XX (XX étant un numéroteur)

Vous pouvez le vérifier par vous même en regardant dans les tables systems avec l'ordre SQL suivant :

Code :
1
2
3
SELECT RDB$CONSTRAINT_NAME FROM RDB$RELATION_CONSTRAINTS
WHERE RDB$CONSTRAINT_TYPE='PRIMARY KEY'
AND   RDB$RELATION_NAME = 'T_FOURNISSEUR'
Dans le premier cas le résultat sera bien PK_FRN
dans le second cas vous aurez le nom qu'interbase a attribué lui même INTEG_XX.

Maintenant il n'y a aucunne raison que le contenu d'un libellé fasse aller plus vite qu'un autre. Et dans les docs d'interbase il n'y a rien qui mentionnerait un tel comportement.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h43   #6
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Je suis tout a fait d'accord avec vous, les documentations n'en font aucune mention (d'ou le titre de mon Post).
Sinon notre unité de mesure est la seconde, nous n'utilisons pas de monitor car pour l'instant aucun des monitors testés ne semble nous convenir.
En tout cas, pour nous il semble avoir une difference au niveau du temp sans arriver a trouver une explication (cohérente), cependant comme à mon avis il est plus clair de donner un nom à une clé primaire on ne se privera pas d'avoir l'espoir d'améliorer les performances.

Merci pour ces réponses.
Bonne journée. @+
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 11h16   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Déjà vous me parlez de traitements que vous mesurez en secondes
ce qui est ennorme...

Je viens de faire le test suivant :

Création de deux tables :
Code :
1
2
3
4
5
6
CREATE TABLE T_FOURNISSEUR (
    FRN_NOM     CHAR(16) NOT NULL,
    FRN_PRENOM  CHAR(16) NOT NULL
);
 
ALTER TABLE T_FOURNISSEUR ADD CONSTRAINT PK_FRN PRIMARY KEY (FRN_NOM, FRN_PRENOM);
Code :
1
2
3
4
5
6
CREATE TABLE T_FOURNISSEUR2 (
    FRN_NOM     CHAR(16) NOT NULL,
    FRN_PRENOM  CHAR(16) NOT NULL
);
 
ALTER TABLE T_FOURNISSEUR2 ADD PRIMARY KEY (FRN_NOM, FRN_PRENOM);
J'ai inséré 100 000 enregistrements dans T_FOURNISSEUR
Puis j'ai recopié les même enregistrements dans T_FOURNISSEUR2.

Les différents tests de performances donnent exactement les même temps d'exécution....

Par exemple un

Code :
1
2
3
SELECT FRN_NOM, FRN_PRENOM
FROM T_FOURNISSEUR
WHERE FRN_NOM>'X'
et un
Code :
1
2
3
SELECT FRN_NOM, FRN_PRENOM
FROM T_FOURNISSEUR2
WHERE FRN_NOM>'X'
Donne un temps d'execution de 100ms avec tous les fetchs (7835 records renvoyés) quelque soit la table...

En tout état de cause on est encore bien loin de la seconde....

Je pense que votre problème vient d'ailleur....
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2004, 09h08   #8
Membre du Club
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 66
Points : 66
Merci pour cette réponse. Effectivement nous n'obtenons pas les mêmes résultats. Juste pour information, vous travaillez avec quel logiciel de programmation? vous utilisez quels composants ? et sans vouloir etre indiscret votre SGBD est elle local ?

Merci. @+
Sitting Bull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2004, 10h23   #9
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
J'ai effectué ces tests avec IBExpert et IBConsole (qui utilisent tout deux une connexion native).

En local ou distant (reseau local TCP/IP) c'est la même chose.

Edité : Je fais quelques tests et reviens
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h01.


 
 
 
 
Partenaires

Hébergement Web