|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2009 Messages : 5 ![]() |
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" ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
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
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
10
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : février 2009 Messages : 5 ![]() |
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 J'avais une piste Code :
ALTER TABLE "Romans" ALTER COLUMN "Ref Roman" RESTART WITH 1 Citation:
|
|
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
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
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : février 2009 Messages : 5 ![]() |
Citation:
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 ? |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
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
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com