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

SQL Firebird Discussion :

index sur expression


Sujet :

SQL Firebird

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut index sur expression
    bonjour a tous

    Dans une table avec un champs date, j'ai cree un index sur les annees

    La table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE N_SESSION (
        ID_SESSION     INTEGER NOT NULL,
        ID_PROVI       INTEGER,
        ID_LIEUDIT     INTEGER,
        ID_BAGUEUR     INTEGER,
        ACTIF          BOOLEAN /* BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (0,1)) */,
        DATE_SESSION   DATE NOT NULL,
        DATE_CREATION  DATE DEFAULT current_date NOT NULL,
        ID_CREATEUR    INTEGER DEFAULT 0 NOT NULL,
        ID_USER        INTEGER DEFAULT 0 NOT NULL,
        DATE_MODIF     TIMESTAMP DEFAULT current_timestamp NOT NULL
    );
    l'index sur l'annee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DESCENDING INDEX IDX_N_SESSION_ANNEE ON N_SESSION COMPUTED BY (EXTRACT(YEAR FROM N_session.Date_session));
    Mais lorsque je fais une requete pour recuperer les annees de cette table, le plan n'utilise pas cet index, quelle betise je fais ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT EXTRACT(YEAR FROM N_SESSION.DATE_SESSION) AS ANNEE
      FROM N_SESSION
     GROUP BY EXTRACT(YEAR FROM N_SESSION.DATE_SESSION)
     ORDER BY 1 DESC

    merci

    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Essayez après avoir créé cette index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE INDEX IDX_A_N_SESSION_ANNEE ON N_SESSION COMPUTED BY (EXTRACT(YEAR FROM N_session.Date_session));

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Merci

    ca marche

    Puis-je poser une question

    Pourquoi avec l'index ascendant ca marche et pas avec le descendant alors que la requete precise un tri descendant ?


    a+ et encore merci

    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    parce que c'est le GROUP BY qui prime
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

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

Discussions similaires

  1. Comment savoir s'il existe un index sur ma table ?
    Par CDRIK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/10/2004, 09h58
  2. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14
  3. n INDEXs sur chaque champ ou 1 seul INDEX sur n ch
    Par fourchette dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/04/2004, 10h55
  4. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20

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