J'ai un soucis de perf quand je passe en UTF8 :
J'ai une table :
J'insert 8000 lignes avec des username qui comportent des doublons. Pour trouver ces doublons j'exécute la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE IF NOT EXISTS `doublons` ( `id` int(11) NOT NULL default '-1', `username` varchar(255) default '', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM `doublons` WHERE username IN ( SELECT username FROM `doublons` GROUP BY username HAVING count( * ) >1 ) order by username;
Cette requête prend environ 4min, cependant si je réalise les mêmes étapes en changeant le default charset à UTF-8 le temps d'éxecution passe à plus de 20min !
En ajoutant un index sur le champs username ça tombe respectivement à environ 1min30 et 2min30.
Est-ce normal d'avoir un tel écart ? Et sinon dans quelle direction dois-je chercher pour optimiser ça ?
Je fais mes tests sur la version : 5.0.45-1ubuntu3.1
Partager