Bonjour,

Voici le code:
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);
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.
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.