Optimisation d'une requête
Bonjour,
Sur un formulaire, je saisi le début d'un nom et avec ajax j'alimente une liste de sélection.
Je me pose des questions sur la meilleur façon d'optimiser mes tables pour être le plus performant possible dans la lecture de mes tables.
J'ai 2 tables : clients et clients_adresses.
L'identifiant commun au 2 tables est "id_client".
Dans ma table clients j'ai 3 champs sur lesquels je souhaite faire ma recherche de nom :
- client_raison_sociale
- client_nom
- client_prenom
Je concataine les 3 champs pour pouvoir faire une recherche sur "dupont philippe"
Ma table clients a un index constitué des champs client_raison_sociale, client_nom, client_prenom
Voici ma requête
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| SELECT clients.id_client, client_raison_sociale, client_service, client_nom, client_prenom, client_code_postal, client_ville
FROM clients
LEFT OUTER JOIN clients_adresses
USING ( id_client )
WHERE CONCAT(client_raison_sociale, ' ', client_nom, ' ', client_prenom) LIKE '%dupont philippe%'
AND (
CURDATE( ) <= client_adr_date_fin
OR client_adr_date_debut <= CURDATE( )
AND client_adr_date_fin = '0000-00-00'
)
ORDER BY client_raison_sociale, client_nom, client_prenom
limit 0, 10 |
Ma base fait 400 000 enregistrements et lorsque je fais une requête le temps de réponses est de plus de 1" voir 2".
Comment optimiser ma requête ?
Merci d'avance.