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

 MySQL Discussion :

Question d'index (optimisation)


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut Question d'index (optimisation)
    Bonjour

    J ai une base de données avec des arrivées de courses hippiques.

    J ai une table dont la structure est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_course` int(11) NOT NULL,
      `couple` varchar(50) NOT NULL,
      `cg` double NOT NULL,
      `cp` double NOT NULL,
      PRIMARY KEY (`id`),
      KEY `idx_id_course` (`id_course`),
      KEY `idx_couple` (`couple`)
    J aimerai savoir si mes index sont pertinents dans la mesure ou je souhaite effectuer une rechecrhe du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from table where id_course=1234 and (couple like '%1%' and couple like '%2%')
    Ne serait il pas plus pertinent de faire un seul index sur les colonnes id_course ET couple ?

    merci de vos conseils

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    Aucun index ne sera utilisé pour une expression de la forme colonne like '%chaine%'.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Merci pour cette réponse.

    Si toutefois, car j ai le cas avec d autres tables ou je fais une recherche sur 2 ou 3 colonnes de type numeriques (INT ou FLOAT), le plus pertinent, en termes de performance est d indexer les colonnes séparément ou les réunir dans un seul index ?

    Ma requête sera de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from table where id_course=1234 and no=123 and rg>0

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par MoiStéphane Voir le message
    Merci pour cette réponse.

    Si toutefois, car j ai le cas avec d autres tables ou je fais une recherche sur 2 ou 3 colonnes de type numeriques (INT ou FLOAT), le plus pertinent, en termes de performance est d indexer les colonnes séparément ou les réunir dans un seul index ?

    Ma requête sera de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from table where id_course=1234 and no=123 and rg>0
    Un SELECT * est la pire imbécilité et il y a toutes les chances qu'aucun index ne soit jamais utilisé.

    Vous devez mettre dans la clause SELECT de l'ordre SELECT uniquement les colonnes nécessaire au traitement ou à l'affiche de manière énumérée pour avoir une chance que votre index soit utilisé.

    Pour votre information sur le choix d'un index, lisez les articles que j'ai écrit à ce sujet :
    https://blog.developpez.com/sqlpro/p..._oui_mais_quoi
    https://blog.developpez.com/sqlpro/p...ut_sur_l_index

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Merci, je vais aller lire cela

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Aucun index ne sera utilisé pour une expression de la forme colonne like '%chaine%'.
    FAUX...


    Aucun index ne sera utilisé en mode recherche (seek) pour une expression de la forme colonne like '%chaine%'.
    mais l'index peut être utilisé en mode balayage (scan) ce qui est plus rapide que de balayer toute la table....

    par contre je sais pas si MySQmerde est capable de ça vu son très faible niveau technique !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Questions sur Index
    Par bibette dans le forum SAS Base
    Réponses: 1
    Dernier message: 07/07/2008, 16h26
  2. Questions concernant l'optimisations d'une BDD Mysql
    Par ChriGoLioNaDor dans le forum Requêtes
    Réponses: 0
    Dernier message: 22/04/2008, 10h55
  3. Question sur index DB2 400
    Par Jibon dans le forum DB2
    Réponses: 4
    Dernier message: 19/08/2007, 17h58
  4. [phpBB] Question concernant l'optimisation d'une base de données MySql
    Par Evocatii dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/06/2007, 12h47
  5. [débutant] questions - regroupement indexes et jobs ?
    Par nagty dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/07/2005, 09h17

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