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

Requêtes MySQL Discussion :

Index, dates et fonctions sur dates


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Index, dates et fonctions sur dates
    Bonjour à tous,

    Je vous pose mon problème :
    J'ai deux tables v et w avec un champ date dans chacune d'entre elle, ces tables contiennent des centaines de milliers d'enregistrements.
    J'ai un index sur chacun de ces champs date des deux tables.
    MAIS dans une de mes requêtes j'ai quelque chose du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ABS(DATEDIFF(w.datew,v.datev))<3
    La requete est grandement ralentie par cette opération, puisque aucun index n'est utilisé avec le DATEDIFF...

    Auriez-vous une solution? D'avance merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Je ne crois pas qu'il y en ait !
    Il faut bien que le SGBD fasse l'opération sur chaque couple de dates et aucun index ne sera utile.

    Par contre, pourquoi chercher la valeur absolue de la différence entre deux dates ?
    Citation Envoyé par Doc MySQL
    DATEDIFF() retourne le nombre de jours
    ...
    Seule la partie DATE est utilisée dans le calcul
    Le nombre de jours retourné par la fonction est toujours un entier !

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    J'utilise ABS car je ne sais pas toujours laquelle est la plus grande des deux, et pour donc obtenir un résultat positif quoi qu'il arrive, ce n'est pas une fonction de truncate ou de round

    J'osais espérer un semblant d'index possible avec deux champs sur deux tables différentes, mais bon, peut-être dans la version 8 de MySQL

  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
    21 862
    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 : 21 862
    Points : 53 013
    Points
    53 013
    Billets dans le blog
    6
    Par défaut
    Si, il y en a, il faut rendre le prédicat "cherchable" (sargable en anglais)

    En l’occurrence une fonction appliqué à vos deux colonnes empêche la sargeablbilité.

    Et comme MySQL est nul en matière d'optimisation, il ne sait pas transformer ce précidat en prédicat sargeable !

    A vous de le faire.

    A +

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par MatMerz Voir le message
    et pour donc obtenir un résultat positif quoi qu'il arrive, ce n'est pas une fonction de truncate ou de round
    Au temps pour moi, j'ai confondu !

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/06/2013, 15h04
  2. requete sur date (pas trouvée sur l'internet)
    Par nso.l dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/05/2013, 22h21
  3. tri sur date en fonction de données issues d'un formulaire
    Par emulamateur dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/07/2011, 20h02
  4. [Dates] Une fonction des dates
    Par amine_en_france dans le forum Langage
    Réponses: 3
    Dernier message: 06/03/2007, 12h07
  5. [CR]Aide sur les fonction de date et plage de date.
    Par Job dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/11/2005, 09h19

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