Bonjour à tous !

Nous avons un petit soucis que nous ne comprenons pas forcément.

Je vous explique :

Voici une table de notre base MySQL, contenant 70 000 000 de lignes dont la structure ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
MA_TABLE
{
   PRI_ID         INTEGER NOT NULL,
   MY_DATE     TIMESTAMP NOT NULL,
   d'autres champs
};
 
 
ALTER TABLE MA_TABLE
       ADD  ( PRIMARY KEY (PRI_ID) ) ;
 
ALTER TABLE MA_TABLE MODIFY COLUMN PRI_ID INTEGER NOT NULL AUTO_INCREMENT;
 
CREATE INDEX MY_INDEX ON MA_TABLE
(
       MY_DATE                      ASC
);
Bref, nous faisons une requête du style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT tous_mes_champs FROM MA_TABLE WHERE MY_DATE BETWEEN DATE1 AND DATE2
Cette requête répond en 0,5 secondes au maximum. Ils y'a à peu près 800 000 lignes dans la réponse. (avec un explain, on voit qu'il utilise bien l'index.)

Maintenant, on fait un DELETE sur cette table dans le même intervalle de temps : ça fait 2600 secondes que le delete est parti, il n'est toujours pas terminé...

Pensez vous que cela soit normal??

Je précise :

- moteur de la table innodb
- cette table référence 4 tables au moyen de foreign keys, mais n'est référencée par personne.

D'avance merci pour vos tuyaux