Bonjour,

Je ne suis sans doute pas au bon endroit, mais j'ai une question qui me tarraude l'esprit depuis quelque temps.
Nous avons un applicatif métier développé sous Delphi avec Firebird 2.1.5 par un éditeur logiciel.
Sauf erreur de ma part, et selon mon expérience dans le domaine de la conception de base de données (environs 16 années),
est ce qu'une âme avertie pourrait m'éclairer et m'expliquer la pertinence de quelques index placés sur une table donc voici la description :

Table XXXXX
ID Bigint not null
DE Varchar(255)
A Varchar(1000)
SUJET Varchar(1000)
CORPS Varchar(1000)
PIECEJOINTE Varchar(100)
TYP_ENVO Integer
COD_SIT Varchar(10) not null
SMTP Varchar(100)
MODE Integer
REFERENCE Varchar(100)
PREFIXE Varchar(50)
COD_PART Varchar(20)
NUM_PIECE Varchar(50)
TYP_PIECE Integer
TYP_PART Integer
TYP_TRANS Integer
TYP_COMPL Integer
FLAGMULTIBL Integer
TIMER_ENVOI Time
DATE_DEMANDE Timestamp
DATE_PROG Date
DATE_ENVOI Timestamp
PARAMREPORTNAME1 Varchar(50)
PARAMREPORTVALUE1 Varchar(50)
PARAMREPORTNAME2 Varchar(50)
PARAMREPORTVALUE2 Varchar(50)
PARAMREPORTNAME3 Varchar(50)
PARAMREPORTVALUE3 Varchar(50)
PARAMREPORTNAME4 Varchar(50)
PARAMREPORTVALUE4 Varchar(50)
PARAMREPORTNAME5 Varchar(50)
PARAMREPORTVALUE5 Varchar(50)
PARAMREPORTNAME6 Varchar(50)
PARAMREPORTVALUE6 Varchar(25000)
PARAMREPORTNAME7 Varchar(50)
PARAMREPORTVALUE7 Varchar(50)
PARAMREPORTNAME8 Varchar(50)
PARAMREPORTVALUE8 Varchar(50)
PARAMREPORTNAME9 Varchar(50)
PARAMREPORTVALUE9 Varchar(50)
PARAMREPORTNAME10 Varchar(50)
PARAMREPORTVALUE10 Varchar(50)
ERREUR Integer not null
NB_ESSAI Integer not null

Indexes

IDX_PART_MAILFAX_QUEUE1 ASC => COD_SIT, MODE, NUM_PIECE, TYP_PIECE, TYP_PART, DATE_ENVOI
IDX_PART_MAILFAX_QUEUE2 ASC => COD_SIT, MODE, NUM_PIECE, TYP_PIECE, TYP_PART, DATE_ENVOI, COD_PART, A
IDX_PART_MAILFAX_QUEUE3 ASC => MODE, TIMER_ENVOI, DATE_ENVOI
IDX_PART_MAILFAX_QUEUE4 ASC => A, COD_SIT, COD_PART, NUM_PIECE, TYP_PIECE, TYP_PART, DATE_ENVOI
IDX_PART_MAILFAX_QUEUE5 ASC => DE, DATE_DEMANDE
PART_MAILFAX_QUEUE_IDX1 ASC => DATE_ENVOI, MODE
PART_MAILFAX_QUEUE_IDX2 ASC => ERREUR
PK_PART_MAILFAX_QUEUE ASC => ID_MAILFAX_QUEUE, COD_SIT

Comment peut on même simplement envisager de placer dans un index composé un champ de type varchar(1000) ?

Je ne sais pas comment optimiser dans une telle structure afin d'améliorer les performances globales.
Si quelqu'un a une idée, je suis preneur.

Michel

PS : juste pour information, il y environ 350000 enregistrements dans cette table.