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 Procédural MySQL Discussion :

Défragmenter la clé primaire


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut Défragmenter la clé primaire
    Bonjour,

    Je travaille peut-être dans un contexte peu répandu : LibreOffice Base avec moteur MySQL JDBC sous Win7 FP.

    A force de persévérance j'ai réussi à bâtir un SGDBR de 22 tables (dont le principale avec 10.000 enregistrements) liées par 30 jointures.

    Après avoir retiré de nombreux enregistrements de ma table principale, la clé primaire présente de nombreux trous.

    Question : comment "défragmenter" la clé primaire en respectant la correspondance avec les clés étrangères utilisées par les jointures.
    Autrement dit, comment effectuer une "défragmentation en cascade" ?

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Question : à quoi va servir de défragmenter ?

    Une clé primaire ne sert qu'à assurer l'unicité dans la table, alors qu'il y ait des trous ou pas, quelle importance

    D'autant que de suite après la manip, la base va vivre, il y aura des suppressions, et donc à nouveau des trous

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Simplement parce que, chez moi, la recherche par numéro d'enregistrement est instantanée, alors que la recherche sur un champ (quand il y en a plus de 10.000) prend un temps certain.

    Donc quand le champ ID correspond au n° d'enregistrement, on peut atteindre immédiatement (dans un formulaire, par exemple) un enregistrement dont on connaît l'ID.

    Nota : je suis, pour l'instant, le seul utilisateur de la base car je suis en train de la mettre au point.

    J'avais une piste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 1
    mais ça me renvoie une erreur de syntaxe :
    1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Ref Roman" RESTART WITH 1' at line 1

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Citation Envoyé par Larry3406 Voir le message
    Simplement parce que, chez moi, la recherche par numéro d'enregistrement est instantanée, alors que la recherche sur un champ (quand il y en a plus de 10.000) prend un temps certain.

    Donc quand le champ ID correspond au n° d'enregistrement, on peut atteindre immédiatement (dans un formulaire, par exemple) un enregistrement dont on connaît l'ID.
    Vous êtes en train de comprendre l'utilité des index !!
    Ne touchez pas à votre clé primaire, qui est une clé technique. Elle vous assure l'unicité. Si vos requêtes prennent du temps, visualisez le plan d’exécution, analysez-le et repérez les malfaçons de vos requêtes (ou de votre modèle de données). Vous aurez les éléments pour remédier à votre problème (création d'index, reformulation de vos requêtes, modification de votre modèle de données,...).

    Bon courage

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    ... visualisez le plan d'execution, analysez le et reperer les malfacons de vos requetes (ou de votre modele de données).
    ... modification de votre modele de données,...).
    Autant de choses qui me paraissent fort utiles et que je saurai, sans doute, faire un jour.
    Pour l'instant je suis débutant et je travaille, comme je le précise à l'origine de la discussion, avec l'interface Base de LibreOffice (qui me libère, provisoirement, d'avoir à apprendre, en plus, le PHP).
    Pardonnez-moi d’être novice

    Par ailleurs je précise que la clé primaire est indexée par défaut, il me semble, non ?

  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Je ne vous blâme pas du tout d’être novice, mais vous demandez des conseils, nous vous en donnons.
    Si votre recherche sur vos "champs" est longue, c'est qu'un index devrait y être posé, cela accélèrerait le processus.

    Concernant la clé primaire, elle est effectivement indexée par défaut ce qui explique que vos recherche via ce biais soit très rapide.

    Bon courage

Discussions similaires

  1. Import data d'Excel ds 2 table lié par clé primaire
    Par lord_paco dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 10/05/2005, 09h31
  2. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  3. clé primaire aléatoire
    Par peuh dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 23/06/2003, 20h51
  4. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

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