Aller au contenu

Neoxy

Hubmaster
  • Compteur de contenus

    167
  • Inscrit(e) le

  • Dernière visite

Messages postés par Neoxy

  1. Pour une valeur donnée de table2.zone, il y a combien de lignes dans table et table2?

    Tu peux essayer:

    - index sur table2(zone) + index sur table(activ,id,prio,last_update)

    - index sur table2(zone) + index sur table(id,activ,prio,last_update)

    - index sur table2(id) + index sur table(active,prio,last_update)

    Dans tous les cas je pense qu'il te faut un index sur table3(id,lang) (ou lang,id qui sera probablement un poil plus rapide)

    Jacques.

    Il y a entre 1 et 4 enregistrements dans la table2 pour un enregistrement de la table1

    Il y a entre 1 et 6 enregistrements dans la table3 pour un enregistrement de la table1

    En ce qui concerne les indexs, je les ai bien placé la ou il faut... De plus, pour id ou autres, ce sont déjà des clés primaires... Je pense qu'on ne peu pas créer d'indexes sur une clé primaire non ? (en tout cas, phpymadmin n'est pas content quand je crée un indexe sur un champs qui est déjà index ou clé primaire)...

    Merci jacques pour ta réactivité et tes réponses ..

  2. Ca aiderait avec le schéma, on ne sait même pas dans quelle table sont prio et last_update... Avec une idée de la tailles des 3 tables, et de la "sélectivité" des tables/critères (par exemple savoir combien il y a de lignes dans table2 pour une valeur de table2.zone) ce serait encore mieux.

    Jacques.

    Tous les champs sélectionnés proviennent de la table1

    La table 2 contient 450 000 enregistrements et contient 2 colonnes (id, zone)...

    La table 3 contient 750 000 enregistrements et contient 3 colonnes (id, lang, texte)...

    Les écarts de vitesses se ressentent réellement en tripotant l'order by, sachant que prio est un tinyint(2) et last_update est un datetime...

  3. Hello,

    J'avais complètement oublié qu'on pouvait poser un index sur plusieurs colonnes, alors j'ai effectué quelques tests... et les résultats sont assez bizarres, voici ma requète :


    select id, ref, titre, descr, ville, prio, activ
    FROM table
    INNER JOIN table2 ON (table.id = table2.annonce)
    LEFT JOIN table3 ON (table3.id = table.id and table3.lang = "fr")
    where table.activ=1 and table2.zone =43
    [b]order by prio desc, last_update desc[/b]
    limit 0, 10

    Ce matin, j'avais un index sur prio, et un autre index sur last_update, du coup, lorsque j'enlevais last_update desc, ou prio desc, la vitesse de ma requète était bien bien plus rapide contre 0,50 secondes lorsqu'il y a les deux

    Du coup, je viens de supprimer mes deux index, et j'ai créé un nouvel index sur les 2 colonnes prio et last_update... Et la requête est maintenant beaucoup plus lente (plusieurs secondes d'execution...)

    Voici un explain :

    id select_type table type possible_keys key key_len ref rows Extra

    1 SIMPLE table index PRIMARY tri_ann 9 NULL 151300 Using where

    1 SIMPLE table2 eq_ref PRIMARY PRIMARY 6 BASE.table.id,const 1 Using where; Using index

    1 SIMPLE table3 eq_ref PRIMARY PRIMARY 6 BASE.table.id,const 1

    Ce qui est vraiment bizarre, c'est que lorsque je change where table2.zone =43 par where table2.zone =2, la vitesse d'execution varie énormément...

    Donc, j'avoue que je suis bien bien perdu !!!

  4. Bonjour,

    J'ai une requête exécutée sur une table avec 150 000 enregistrement qui me pose un soucis.. En effet, celle ci prend 0,50 secondes à s'exécuter... Et je trouve que cela n'est pas très optimisé...

    Alors en fouillant et en tripotant un peu ma requête, j'ai remarqué que la clause ORDER By était assez gourmande en temps d'exécution surtout quand ci effectue un tri sur deux champs....

    En effectuant des tests, lorsque je ne laisse qu'un champs dans l'order by, la requete s'execute alors en 0,0008 secondes (bien plus rapide)...

    Cependant, j'ai besoin d'effectuer un tri sur deux champs et je suis serieusement coincé...

    Es ce qu'il existe une méthode, ou une solution de substitution afin d'effectuer un tri sur mes deux champs de façon à ce que ma requête soit plus rapide???

    J'ai revu tous les champs de mes tables pour les optimiser, j'ai placé des indexs la ou il faut...

    J'ai par ailleurs tripoter les variables system comme le sort_buffer afin d'optimiser, mais rien de concluant...

    Avez vous eu un retour d'expérience sur des ralentissements de requêtes SQL qui prenaient du temps lorsque l'order by triais deux colonnes ???

    Cordialement,

  5. Du coup je viens de comprendre...

    Si j'ai bien compris, la requête parcourt les 59371 enregistrements...

    D'ou l'intérêt de placer des indexes :)

    Cependant, j'ai une autre question, es ce qu'on peu se permettre de placer un index sur une colonne déjà concernée par une clé primaire double...

    En effet, je viens de faire un petit test.. PhpMyAdmin n'a pas l'air d'aimer cela, mais j'ai gagné énormément de temps sur mes requetes avec ce petit ajout...

    Qu'en pensez vous ??

    Cordialement,

  6. Bonjour,

    Je souhaiterais optimiser ma requête et ma base de donnée, cependant, j'ai bien mis de bons indexes la ou il fallait !!!

    J'ai fait un explain, et mysql me retourne la réponse suivante :

    id select_type table type possible_keys key key_len ref rows Extra

    1 SIMPLE a ALL PRIMARY,type NULL NULL NULL 59371 Using where; Using filesort

    J'aimerais comprendre celle ligne car je ne la comprend pas...

    Cordialement,

  7. Avec plaisir ! :)

    C'est vrai que tu as raison SARC, je vais éclaircir mon soucis...

    En fait, je cherchais à optimiser la vitesse de mes requêtes, qui prenaient parfois plus d'une seconde pour s'exécuter...

    Après de nombreux tests et lectures sur le net, j'ai remarqué que la clause Mysql : SQL_CALC_FOUND_ROWS doublait la vitesse d'exécution de ma requete ...

    Cette clause permet de calculer et de retourner le nombre de résultats total d'une requête (sans prendre en compte les limits...) en une seule requete : idéal pour un système de pagination...

    Cependant, j'ai remarqué que je gagnais du temps en exécutant une seconde requête du type : select count (id)... pour connaitre le nombre total de résultats...

    Voila, je pensais par ailleurs avoir un soucis avec les left join, mais en fait, ce n'est pas le cas ! :)

    J'espère que ma réponse pourra aider des développeurs qui se sont arrachés les cheveux comme moi :)

  8. Hello à vous et merci pour vos réponses...

    Il me semblait que ce modele de donnée était le plus adapté ... Mais j'ai quand même eu un petit doute :)

    Pour les index, je pense que c'est ok puisque les champs langue et id_produits sont en clé primaire (donc à prioris, pas besoin de rajouter d'index...)

    J'ai veillé à ce que les indexs soient correctement placés dans les bons champs....

    En fait, j'ai trouvé d'autres pistes concernant la lenteur des requetes, notamment l'utilisation de SQL_CALC_FOUND_ROWS qui a tendance à doubler le temps d'execution...

    J'ai aussi remarqué qu'une jointure Left Join ralentissait la requete quand on j'effectue un where sur un des champs concerné...

    Es ce que vous avez remarqué que left join étais gourmand en ressources lorsqu'on pose une contrainte sur l'un des champs ???

    c

  9. Donc si je comprend bien, je modèle que j'utilise actuellement est plutôt correct, mais est-il optimisé et rapide ???

    C'est vrai que si je met tout dans une seule table, je risque d'avoir des données Null, car tous les contenus ne seront pas traduits...

    J'ai déja posé des indexes sur les champs concernés par des contraintes (where)

    Mais le soucis, c'est que j'ai beaucoup de données, et mes requetes sont quand même lentes (plus d'1 seconde) car ma requete utilise 3 ou 4 jointures...

    Es ce que ce ne serait pas mieux d'effectuer une requete sur une table de 50 000 tuples avec peu de jointures, (avec quelques cases vides)

    Car effectuer une requete avec plein de jointures sur des tables comprenant des centaines de milliers d'enregistrement semble assez lourd...

    Après, si je dois modifier la structure de mes tables et des requêtes, c'est pas grave :) Je recherche la performance et l'optimisation :)

  10. Bonjour,

    je suis un peu embêté car je ne trouve pas de solutions à mon problème.

    J'ai placé une map en Flash sur mon site www.Sun-location.fr, cependant, lorsque l'on passe la souris sur le menu de gauche, les sous menu dynamique s'affichent en dessous du flash, du coup, ils ne sont pas accessibles...

    j'ai pu lire sur divers forum qu'il faut utiliser <param name="wmode" value="transparent"> cependant, ca ne marche pas quand même !!!

    Si quelqu'un a une idée ... je lui en serait très reconnaissant !!!

    Merci d'avance pour vos réponses

  11. Salut,

    Effectivement, c'est plus intéressant de poser une question ciblé que de poser une question très vague ou généraliste...

    Alors à ce moment, la, es ce que je peux poser un post sur le forum en posant , les question suivantes (en même temps):

    Bonjour, que pensez-vous de mon référencement?

    Bonjour, que pensez vous de la charte graphique de mon site ?

    Bonjour, que pensez vous de l'ergonomie du site ?

    Que pensez-vous de la validité de mon code ?

    Plutôt qu'une question généraliste, et au lieu de déposer les questions sur des rubriques différentes !?! :)

    :thumbup::thumbup::thumbup:

  12. Bonjour,

    Merci pour vos réponses...

    Hélas, je n'ai pas une grande quantité d'ami qui soient capable d'apporter une analyse suffisante en terme de webdesign, ergonomie, développement, optimisation, accessibilité... etc etc... Pour ma part, j'essaye d'améliorer mes compétences dans tous ces derniers domaines cités afin de créer quelquechose d'intéressant sur le net...

    Sinon, je ne suis pas un sans amis, je manque juste d'un peu de connaissances ayant les mêmes passion d'internet :)

    L'objectif de ma demande est de connaitre l'avis de passionnés ou de pros en ce qui concerne mon site de location de vacances en signature ;)

    Je me suis quand même débrouillé pour demander des avis, remarques, critiques sur d'autres sites et les réponses sont assez pertinentes !

    Dommage qu'il n'y ai pas de rubrique d'avis (même en no follow) pour que la communauté HUB puisse réagir, conseiller et critiquer :( snif !!!

    Merci quand même poru vos réposnes !

  13. Hello

    Le référenceur a tant de choses à faire .... :) Tout dépend effectivement de la personnalité, de l'organisation, ou de la web agency ...

    Tout dépend aussi des outils utilisés, et qui accompagnent les référenceurs dans leur boulot ...

    - Générateur de sitemap...

    - Outils de suivi de positionnement...

    - Outils de stats de trafic...

    - Applications web diverses et variés :D...

    Il y a tant de choses à faire :)

×
×
  • Créer...