Bonjour,
Voici le code:
Avec les 2 tables de 1000 lignes au total, ça marche mais avec la base de données complète (les 2 tables à 70000 lignes), le script ne se finit pas même au bout de 3 mn et fait planter la machine.
Code php : 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
19 // Execute our SQL statement and return the result $sql = " SELECT entreprises.id, entreprises.Nom, DateDebutActivites, SIRET FROM entreprises LEFT JOIN dirigeants ON (entreprises.id = dirigeants.IdEntreprise) WHERE 0=0 AND ( (entreprises.Nom LIKE '%" . $terms . "%') OR (DenominationSociale LIKE '%" . $terms . "%') OR (NomCommercial LIKE '%" . $terms . "%') OR (Enseigne LIKE '%" . $terms . "%') OR (Sigle LIKE '%" . $terms . "%') OR (SIRET LIKE '%" . $terms . "%') OR (dirigeants.Nom LIKE '%" . $terms . "%') ) GROUP BY entreprises.id $limitClause"; $query = $this->db->query($sql);
En fait c'est la dernière condition OR (dirigeants.Nom LIKE LIKE '%" . $terms . "%') qui est problématique.
Comme vous pouvez le voir, ce bout de code est utilisé pour une recherche donc une recherche qui ne donne pas de résultat au bout de 15 secondes maximum n'est pas intéressant.
Je me demande si un SELECT UNION pourrait bien être la solution.
Partager