Bonjour,

J'ai actuellement une table qui a le schéma suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
TYPETAUX      CHAR(1) NOT NULL
CODEPERSONNE  VARCHAR(10) NOT NULL
CODEPRODUIT   VARCHAR(5) NOT NULL
TAUX          DECIMAL(15,5)
DAT           DATE NOT NULL
Elle Contient plusieurs millions d'enregistrements, mes SELECT toujours de la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT CODEPRODUIT,TYPETAUX,TAUX WHERE CODEPERSONNE = XXXX AND DAT = XXXX.
Première question : est il recommandé de faire des SELECT sur des champs VARCHAR, la requete ne serait elle pas plus rapide si mon champ CODEPERSONNE était de type INTEGER ?

Seconde question : les données dans cette table sont toujours ou presque lié par 2, je m'explique :

- pour chaque jour,personne,produit j'ai 2 enregistrements, 1 avec TYPETAUX à A et B :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
A,TOTO,XR25,12.5421,'12.06.09'
B,TOTO,XR25,18.324 ,'12.06.09'
Je voulais savoir si je pouvais avoir une requete qui ramène 1 seul enregistrement avec les 2 valeurs de TAUX (1 avec le TYPETAUX A et l'autre B) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TOTO,XR25,12.5421,18.324,'12.06.09'
Ou vaut il mieux créer une SECONDE TABLE alimenté par TRIGGERS sur les DELETE et INSERT de la première qui aurait ce schéma et qui me permettrai de ramener simplement 1 enregistrement avec les 2 TAUX:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CODEPERSONNE  VARCHAR(10) NOT NULL
CODEPRODUIT   VARCHAR(5) NOT NULL
TAUX_A        DECIMAL(15,5)
TAUX_A        DECIMAL(15,5)
DAT           DATE NOT NULL
La Table d’origine n’a pas ce schéma, car je penses que niveau performance c’est mieux de faire un DELETE / INSERT ( WHERE CODEPERSONNE,CODEPRODUIT,TYPETAUX,DAT) plutôt que dans le second schéma, un SELECT Si enregistrement alors UPTDATE sinon INSERT, car en fait l’alimentation de TAUX avec TYPETAUX A ou B ne se fait pas du tout en même temps dans mon programme.

Merci