MYSQL n'utilise pas l'index

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par jeroen, 24 Février 2012.

  1. jeroen
    jeroen WRInaute passionné
    Inscrit:
    30 Août 2002
    Messages:
    2 131
    J'aime reçus:
    0
    Bonjour, j'ai un problème avec mysql, et je ne comprends pas d'ou il vient.

    J'ai une table TABLE
    avec deux champs
    id mediumint(6) AUTO_INCREMENT
    date int(10)

    et des indexes associés
    PRIMARY associé à id
    date associé à date

    Si je fais
    EXPLAIN SELECT id FROM sorties WHERE id>=un_id l'index sur ID est bien utilisé

    alors que
    EXPLAIN SELECT id FROM sorties WHERE date>=une_date l'index sur DATE n'est pas utilisé


    Auriez vous une explication ?

    Merci
     
  2. jeroen
    jeroen WRInaute passionné
    Inscrit:
    30 Août 2002
    Messages:
    2 131
    J'aime reçus:
    0
    Bonjour, pas d'idée ? pour personne ? :cry:
     
  3. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Peut être parce que date ne figure pas dans la sortie demandée sur la seconde requête (suis pas spécialiste).
    Essaie pour voir un truc du genre :
    EXPLAIN SELECT id,date FROM sorties WHERE date>=une_date
     
  4. jeroen
    jeroen WRInaute passionné
    Inscrit:
    30 Août 2002
    Messages:
    2 131
    J'aime reçus:
    0
    Merci, mais non, ce n'est pas ça. Peu importe les champs récupérés en fait, le problème se situe lors de la sélection des lignes...
    Comprends pas...
     
  5. f_trt
    f_trt WRInaute impliqué
    Inscrit:
    17 Septembre 2005
    Messages:
    953
    J'aime reçus:
    0
    Quelques pistes :
    Peut etre un rapport avec le nom du champs date ?
    Bizarre aussi d'avoir un champs date de type int ?
    Tiens nous au courant si tu trouves la raison, car c'est vrai que c'est bizarre.
     
  6. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    les timestamps unix c'est des int ... mais par contre la piste du champ appelé "Date" est pas idiote je me souviens avoir eu des souci avec des champs utilisant des mot réservés.
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 181
    J'aime reçus:
    351
  8. jeroen
    jeroen WRInaute passionné
    Inscrit:
    30 Août 2002
    Messages:
    2 131
    J'aime reçus:
    0
    Merci pour vos réponses. J'ai poussé un peu plus les tests

    Code:
    SELECT date FROM sorties WHERE date>=ma_date
    il utilise bien l'index

    par contre si je fais
    Code:
    SELECT id, date FROM sorties WHERE date>=ma_date
    il n'utilise PAS l'index

    ou si je fais
    Code:
    SELECT date FROM sorties WHERE date>=ma_date AND id>mon_id
    il n'utilise PAS l'index

    Sois j'ai rien compris aux index, soit j'ai rien compris aux index. Comment faire pour forcer l'utilisation des index dans les 2 derniers cas (ma table SORTIES commence à être bien conséquente, et ce type de requête apparaît dans le slowlog de mySQL)
     
  9. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Tes indexs sont deux indexs différents ou est ce un index sur les deux champs ?
     
  10. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Tu peux forcer l'utilisation de certain index. Essaie:
    Code:
    SELECT id, date FROM sorties WHERE date>=ma_date USE INDEX(date)
     
  11. jeroen
    jeroen WRInaute passionné
    Inscrit:
    30 Août 2002
    Messages:
    2 131
    J'aime reçus:
    0
    @zeb: Mes index sont différents
    @Bount, la requête semble être
    Code:
    SELECT id, date FROM sorties USE INDEX(date) WHERE date>=ma_date
    mais ne semble pas changer quoi que ce soit...
     
  12. arnaudmn
    arnaudmn WRInaute passionné
    Inscrit:
    11 Mai 2005
    Messages:
    1 038
    J'aime reçus:
    2
    Quand j'essaye sur ma version de mysql (4.1.9), ça fonctionne. Donc voir si ta version n'a pas un problème, par exemple sur le fait que tu utilises comme index et comme nom un mot réservé (date). Tu peux toujours faire cloner ta table en changeant le nom du champ et de l'index pour voir si c'est mieux en les appelant autrement.
    Mais chez moi "explain SELECT id, date FROM `sorties` WHERE date>=1" me dit bien que ça peut utiliser l'index "date".
    Ou peut être as tu un problème dans la gestion des index ? Faire un "OPTIMIZE TABLE sorties" pour les reconstruire correctement.
    Ou nous passer la structure complete de la table qu'on voit ce qui bloque.
     
Chargement...
Similar Threads - MYSQL utilise Forum Date
Utiliser des INT ou des VARCHAR pour les relations entre les tables MySQL ? Développement d'un site Web ou d'une appli mobile 9 Avril 2015
Utiliser mysql_connect ou mysql_pconnect ? Développement d'un site Web ou d'une appli mobile 18 Mars 2010
Php/MySQL Utiliser pls fois le résultat d'une seule requête Développement d'un site Web ou d'une appli mobile 25 Avril 2008
Utiliser XML ou MySQL pour les langues d'un site web Référencement international (langues, pays) 13 Avril 2008
[Mysql/php] ID Autoincrement, recuperer id inutilisés Développement d'un site Web ou d'une appli mobile 20 Mars 2008
Mysql n'utilise que 1% du CPU au lieu de 100% ! Administration d'un site Web 17 Septembre 2007
Mysql n'utilise pas ses index !!! Administration d'un site Web 16 Septembre 2007
[MYSQL] chercher une clef non utilisée Développement d'un site Web ou d'une appli mobile 17 Octobre 2006
Pour phpbb final release je veux utiliser mysql ! Développement d'un site Web ou d'une appli mobile 10 Octobre 2006
SQL / Mysql / PHP : utiliser plusieurs bases à la fois Développement d'un site Web ou d'une appli mobile 26 Mai 2006
[PHP/MYSQL] incrementation auto > reutiliser un id effacé Administration d'un site Web 30 Mars 2005
Mysql : Impact convertion champ numérique SMALLINT vers BIGINT Développement d'un site Web ou d'une appli mobile 23 Août 2021
Quel SGBDR autre que MySQL/MariaDB ? Administration d'un site Web 12 Janvier 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Supprimer les doublons d'une table mysql Développement d'un site Web ou d'une appli mobile 16 Juin 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019