Bonjour,

J'ai besoin d'optimiser une requête qui dure plus que 7 min sur mon serveur MySQL,

voici la req :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
INSERT INTO Tab3 SELECT A.id_1 FROM  Tab1 A inner join Tab2 B ON(A.id_1 = B.id_1);
Voici la structure de la table A :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE `Tab1` (
  `id_1` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `date_update` datetime DEFAULT NULL
  PRIMARY KEY (`id_1`),
) ENGINE=MyISAM;
La structure de la Table B ( Table Memory)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE `Tab2` (
  `id_1` int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id_1`),
  KEY `id_1` (`id_1`) USING HASH
) ENGINE=MEMORY ;

L'explain me donne :
+----+-------------+-------+--------+---------------+---------+---------+------------------------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+---------+---------+------------------------+---------+-------------+
| 1 | SIMPLE | B | ALL | PRIMARY,id_1 | NULL | NULL | NULL | 2000000 | |
| 1 | SIMPLE | A | eq_ref | PRIMARY | PRIMARY | 4 | bddm_data_59240.B.id_1 | 1 | Using index |
+----+-------------+-------+--------+---------------+---------+---------+------------------------+---------+-------------+

Donc le probléme vient de le faite de parcourir toute la table Memory pourtant qu'elle est indexée !!!

sachant que si je fait un explain sur la table memory uniquement, ça me donne :

mysql> explain select id_1 from Tab2 where id_1 = 54874;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | Tab2 | const | PRIMARY,id_1 | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+


Merci de Votre Aide.