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 :

Partition sur date et to_days


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Par défaut Partition sur date et to_days
    Hello

    J'ai la table suivante avec une partition sur une date (usage_date) utilisant le to_days

    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    CREATE TABLE `network` (
      `id` varchar(50) NOT NULL DEFAULT '',
      `type` varchar(20) NOT NULL,
      `nature` smallint(6) NOT NULL,
      `sense` smallint(6) NOT NULL,
      `msisdn` varchar(20) NOT NULL,
      `msisdn_country` varchar(50) DEFAULT NULL,
      `msisdn_zone` varchar(5) DEFAULT NULL,
      `contact` varchar(50) DEFAULT '',
      `contact_country` varchar(50) DEFAULT NULL,
      `usage_date` datetime NOT NULL,
      `contact_zone` varchar(5) DEFAULT NULL,
      `volume` bigint(10) unsigned NOT NULL,
      `zoning` varchar(20) NOT NULL,
      `in_trunk` varchar(50) NOT NULL,
      `out_trunk` varchar(50) NOT NULL,
      `filename` varchar(100) NOT NULL,
      `CD_SERV` varchar(20) DEFAULT NULL,
      `rate` int(11) DEFAULT NULL,
      KEY `Index 1` (`type`,`nature`),
      KEY `Index 2` (`msisdn`),
      KEY `Index 3` (`filename`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1
    /*!50100 PARTITION BY RANGE ( TO_DAYS(usage_date))
    (PARTITION rx201302 VALUES LESS THAN (735293) ENGINE = MyISAM,
     PARTITION rx201303 VALUES LESS THAN (735324) ENGINE = MyISAM,
     PARTITION rx201304 VALUES LESS THAN (735354) ENGINE = MyISAM,
     PARTITION rx201305 VALUES LESS THAN (735385) ENGINE = MyISAM,
     PARTITION rx201306 VALUES LESS THAN (735415) ENGINE = MyISAM,
     PARTITION rx201307 VALUES LESS THAN (735446) ENGINE = MyISAM,
     PARTITION rx201308 VALUES LESS THAN (735477) ENGINE = MyISAM,
     PARTITION rx201309 VALUES LESS THAN (735507) ENGINE = MyISAM,
     PARTITION rx201310 VALUES LESS THAN (735538) ENGINE = MyISAM,
     PARTITION rx201311 VALUES LESS THAN (735568) ENGINE = MyISAM,
     PARTITION rx201312 VALUES LESS THAN (735599) ENGINE = MyISAM,
     PARTITION rx2014 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
    Mon problème est que les select avec un filtre sur la date en question font un scan complet, meme lorsqu'une seule partition est utile....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    explain partitions
    select * from network
    where to_days(usage_date) >= to_days ('2013-05-01')
    indique l'utilisation de toutes les partitions: x201302,rx201303,rx201304,rx201305,rx201306,rx201307,rx201308,rx201309,rx201310,rx201311,rx201312,rx2014...

    J'ai 180 millions de lignes dans la table donc me limiter à un mois pour mes analyses est vital!

    Merci

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    pourquoi tu mets to_days() dans ton select et pas tes dates directes?

    c'est quoi les plages de dates de tes partitions, je ne lis pas le résultat de to_days() de tête...?

    on dirait 1 mois non?

    by range avec to_days est plus pensé pour faire des partitions genre une par année...

    là au bout d'un an tu commences à remplir du coup la dernière seulement... tu ne voulais pas plutôt faire un truc avec month()?

Discussions similaires

  1. partition sur colonne date en Oracle 10.2.0.4
    Par debdba dans le forum Oracle
    Réponses: 4
    Dernier message: 13/10/2011, 18h49
  2. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11
  3. [Debutant(e)]operation sur dates
    Par sUrTr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/10/2004, 15h58
  4. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

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