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

Langage SQL Discussion :

Utiliser les index pour faire des requêtes


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club Avatar de gautier1er
    Homme Profil pro
    Developpeur C et PHP
    Inscrit en
    Août 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Developpeur C et PHP

    Informations forums :
    Inscription : Août 2017
    Messages : 61
    Points : 32
    Points
    32
    Par défaut Utiliser les index pour faire des requêtes
    Bonjour les membres du club .J'aimerai faire une requête a l'aide des index mais je ne sais pas comment y arriver.
    Code sql : 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
     CREATE TABLE courrierArrivee
    (
     NumCour BIGINT(10) NOT NULL AUTO_INCREMENT,
    NumOrdreCourArriv SMALLINT(5)  NOT NULL ,
    DateArrivCourServCo DATE NOT NULL, 
    NumOrgCourArriv  CHAR(10) DEFAULT NULL,
    AnneeCA  YEAR NOT NULL,
     FOREIGN KEY (NumCour) REFERENCES courrier (NumCour)
     ON DELETE CASCADE ON UPDATE CASCADE, 
      CONSTRAINT COUR_ARRIVEE_PK PRIMARY KEY (NumCour),
       CONSTRAINT COUR_ARRIVEE_FK1 FOREIGN KEY (NumCour) REFERENCES COURRIER(NumCour)
       ON DELETE CASCADE ON UPDATE CASCADE,
       CONSTRAINT COUR_ARRIVEE_AK1 UNIQUE (AnneeCA,NumOrdreCourArriv )
    )ENGINE=InnoDB;
     
    CREATE UNIQUE INDEX IX1_COUR_ARRIV ON courrierArrivee (AnneeCA ASC,NumOrdreCourArriv  ASC);

    Je veux faire la requête sur l'index crée ci-dessus .

    cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Bonjour,
    Normalement ce n'est pas toi qui décide quel index utiliser pour une requête, c'est le moteur qui se "débrouille" tout seul.

    Tatayo.

  3. #3
    Nouveau membre du Club Avatar de gautier1er
    Homme Profil pro
    Developpeur C et PHP
    Inscrit en
    Août 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Developpeur C et PHP

    Informations forums :
    Inscription : Août 2017
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    un petit exemple pour bien poser mon problème .

    Soit deux champs tels
    Annee : <input name="annee" type="search" placeholder="recherche...."/>
    n° du courrier (exemple: 2017 88) : <input name="numordre" type="search" placeholder="recherche...."/>
    voici la requête:
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $req=$bdd->prepare(' SELECT * FROM courrierArrivee
     WHERE NumOrdreCourArriv=? AND AnneeCA=?');
     $req->execute(array($_POST['numordre'],$_POST['annee'] ) );

    Mais je veux créer un champs unique pour les
    deux (annee et n° du courrier ) .comme ça :
    Annee et n° du courrier (exemple: 2017 88) : <input name="infocour" type="search" placeholder="recherche...."/>
    dont la requête sera :
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $req=$bdd->prepare(' SELECT * FROM courrierArrivee
     WHERE x=?');
     $req->execute(array($_POST['infocour']) );
    est-ce que x peut être remplacer par le nom de l'index par exemple

    Donc j'aimerai savoir s'il ya des requêtes de ce genre avec les index ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Non, tu ne fais pas une recherche sur un index !
    La première requête est la bonne, les critères de recherche sont appliqués sur les colonnes de la table.
    Ensuite tu peux sans problème créer un index unique sur la table. Dans ce cas le moteur décidera s'il peut l'utiliser pour accélérer les recherches, et fera un test d'unicité les des ajouts/modifications.

    Sinon ajouter une colonne dans la table, qui serait une concaténation de 2 autres colonnes est pour moi une mauvaise idée: c'est totalement inutile pour les recherches, et ça t'oblige à ajouter un traitement pour garder cette colonne à jour.

    Tatayo.

  5. #5
    Nouveau membre du Club Avatar de gautier1er
    Homme Profil pro
    Developpeur C et PHP
    Inscrit en
    Août 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Developpeur C et PHP

    Informations forums :
    Inscription : Août 2017
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Merci Tatayo

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

Discussions similaires

  1. Outil graphique pour faire des requêtes ?
    Par falco- dans le forum SGBD
    Réponses: 0
    Dernier message: 27/01/2010, 12h48
  2. Utiliser les Namespace pour appeler des fonctions
    Par Flamby38 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/01/2008, 17h27
  3. utilisation du TChart pour faire des graphiques
    Par tchimou dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/04/2007, 14h59
  4. Réponses: 3
    Dernier message: 05/05/2006, 11h41
  5. utiliser données texte pour faire des calculs
    Par sarah67 dans le forum Access
    Réponses: 20
    Dernier message: 06/02/2006, 14h09

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