IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requete trop longue à exécuter


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Requete trop longue à exécuter
    Bonjour,

    J'ai écrit la requete suivante qui fonctionne mais qui est beaucoup trop longue à exécuter !!!:
    SELECT DISTINCT a.id AS id, a.name AS name, a.city AS city, a.customer_number AS customer_number, a.ranking AS ranking, a.status AS status , b.username AS user
    FROM jos_users AS b
    INNER JOIN jos_neo_customers AS a ON a.user = b.id
    LEFT JOIN jos_neo_contacts AS c ON a.id = c.customer
    WHERE (
    LOWER( a.name ) LIKE '%$searchword%'
    OR LOWER( a.city ) LIKE '%$searchword%'
    OR LOWER( a.zipcode ) LIKE '%$searchword%'
    OR LOWER( c.name ) LIKE '%$searchword%'
    OR LOWER( c.lastname ) LIKE '%$searchword%'
    OR LOWER( a.address1 ) LIKE '%$searchword%'
    OR LOWER( a.address2 ) LIKE '%$searchword%'
    OR LOWER( a.website ) LIKE '%$searchword%'
    OR LOWER( a.mail ) LIKE '%$searchword%'
    OR LOWER( c.mail ) LIKE '%$searchword%'
    )
    J'en ai fait une autre qui est rapide à exécuter mais qui ne me donne que les enregistrements customers pour lesquels un contact est enregistré...

    SELECT DISTINCT a.id AS id, a.name AS name, a.city AS city, a.customer_number AS customer_number, a.ranking AS ranking, a.status AS status , b.username AS user
    FROM jos_users AS b, jos_neo_customers AS a, jos_neo_contacts AS c
    WHERE a.user = b.id
    AND a.id = c.customer
    AND (
    LOWER( a.name ) LIKE '%$searchword%'
    OR LOWER( a.city ) LIKE '%$searchword%'
    OR LOWER( a.zipcode ) LIKE '%$searchword%'
    OR LOWER( c.name ) LIKE '%$searchword%'
    OR LOWER( c.lastname ) LIKE '%$searchword%'
    OR LOWER( a.address1 ) LIKE '%$searchword%'
    OR LOWER( a.address2 ) LIKE '%$searchword%'
    OR LOWER( a.website ) LIKE '%$searchword%'
    OR LOWER( a.mail ) LIKE '%$searchword%'
    OR LOWER( c.mail ) LIKE '%$searchword%'
    )
    Après un paquet d'essais et quelques heures de galeres, je m'en remets donc à vous....

    Merci d'avance pour votre aide !

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    Citation Envoyé par Dans les règles du forum il y
    Donnez les ordres SQL de création de vos tables (CREATE TABLE) et éventuellement les INSERT d'un jeu de données basique pour que tout un chacun puisse reproduire ce que vous voulez faire sur son SGBDR afin de mieux vous aider.

  3. #3
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Les lower sont généralement inutiles avec like et je doute que leur influance sur les performances soit positive.

    Sinon, il faudrait vérifier qu'il y a bien des index pour les jointures (je pense surtout aux clefs étrangères). A part ça les left join font assez mal aux performances (mais c'est difficilement contournable) et si les tables sont grosses retourner autant de texte va bien charger le processeur.

    Il est aussi question d'index full text ou quelque chose comme ça. Je ne les connais pas mais ça pourrait peut-être être ce qu'il faut ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete trop longue?
    Par samplaid dans le forum Débuter
    Réponses: 1
    Dernier message: 11/08/2008, 09h53
  2. [Optimisation] Trop longue exécution
    Par Friedrick dans le forum Langage SQL
    Réponses: 7
    Dernier message: 08/02/2008, 14h58
  3. requete trop longue
    Par realkilla dans le forum WinDev
    Réponses: 6
    Dernier message: 05/12/2007, 14h33
  4. pb requete trop longue
    Par Leimi dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/07/2006, 16h16
  5. requetes trop longues
    Par caro_tpl dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/07/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo