Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2011, 12h09   #1
Invité régulier
 
Blaz DelParis
Inscription : septembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Blaz DelParis

Informations forums :
Inscription : septembre 2010
Messages : 15
Points : 8
Points : 8
Par défaut copie de 50 millions de lignes

bonjour,
j'ai une table partitionnée par semaine. (appelons la TF_WEEK)
chaque semaine contient environ 12 millions de lignes.

afin de mener une étude, j'ai besoin de faire une sélection de données sur un mois. Afin de ne pas perturber la production, je souhaite donc copier les données dont j'ai besoin dans une table à part (qu'on appelle TF_WEEK_STUDY)

Evidemment, vu la volumétrie, un bête
Code :
1
2
 
CREATE TABLE TF_WEEK_STUDY AS SELECT * FROM TF_WEEK WHERE DATE_CMD>='01/02/2011' AND DATE_CMD<='28/02/2011'
prend un peu de temps (au bout de 12h de moulinage, j'ai laissé tombé, ou alors c'est la connexion qui m'a laissé tomber)

Du coup, je me demandais, comme la table est partitionnée par semaine, que je connais donc le nom des partitions dont j'aurai besoin, existe-t-il un moyen rapide (moins de 10h, ça m'irait) pour copier ces données dans une table à part ?

Merci
blazDelParis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 12h17   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

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

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Je ne connais pas de moyen plus rapide que le CTAS. par contre comme tu te contente de sélectionner une partition il est possible de faire

Code :
CREATE TABLE TF_WEEK_STUDY AS SELECT * FROM TF_WEEK partition (P12)
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 13h35   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
si c'est partitioné par semaine, le

WHERE DATECMD >= date '2011-04-04' and DATECMD < date '2011-04-11'

te fera automatiquement un pruning des partitions.

Dans 11g, il y a le INTERVAL partitioning qui t'évitera de créer les partitions à l'avance
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 13h40   #4
Invité régulier
 
Blaz DelParis
Inscription : septembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Blaz DelParis

Informations forums :
Inscription : septembre 2010
Messages : 15
Points : 8
Points : 8
Bonjour, merci pour vos réponses.
J'aurai du préciser, suis sur oracle 10.
Code :
CREATE TABLE TF_WEEK_STUDY AS SELECT * FROM TF_WEEK partition (P12)
avec ce code, je passe d'un cout estimé de 5 millions à 195 000.

C'est nickel merci!
blazDelParis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h10.


 
 
 
 
Partenaires

Hébergement Web