Bonjour,

j'ai des petits soucis de performance sur une requête. La table _act_interlo_mail contient 1 million d'enregistrements, à peu près.

Comme je ne peux pas faire la requête suivante car la recherche sur le champ recherche n'est pas possible.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select `f1`.`intweb_cleunik` AS `intweb_cleunik`,`f1`.`int_cleunik` AS `int_cleunik`,`f1`.`refweb` AS `refweb`
  ,concat_ws(_utf8' ',`f2`.`prenom`,`f2`.`patronyme`) AS `prenom_nom`
  ,concat_ws(_utf8'',`f2`.`prenom`,_utf8' ',`f2`.`patronyme`,_utf8' (',`f1`.`refweb`,_utf8')') AS `recherche` 
from (`_act_interlo_mail` `f1` 
  join `_act_interlo` `f2` on((`f1`.`int_cleunik` = `f2`.`int_cleunik`))) 
where `recherche` like '%xof%' 
limit 50;
Je fais donc une vue avec cette requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
create view recherche1 as 
select `f1`.`intweb_cleunik` AS `intweb_cleunik`,`f1`.`int_cleunik` AS `int_cleunik`,`f1`.`refweb` AS `refweb`
  ,concat_ws(_utf8' ',`f2`.`prenom`,`f2`.`patronyme`) AS `prenom_nom`
  ,concat_ws(_utf8'',`f2`.`prenom`,_utf8' ',`f2`.`patronyme`,_utf8' (',`f1`.`refweb`,_utf8')') AS `recherche` 
from (`_act_interlo_mail` `f1` 
  join `_act_interlo` `f2` on((`f1`.`int_cleunik` = `f2`.`int_cleunik`)));
pour pouvoir faire un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select * from recherche1 where `recherche` like '%xof%' limit 50;
Mais c'est assez long car je ne peux pas créer d'index sur la vue ...

Il y a-t'il un moyen de faire mieux ? De faire différemment ?

D'avance, merci pour vos conseils et remarques.