ALTER TABLE ...

ALTER TABLE ... - SQL/NoSQL - Programmation

Marsh Posté le 25-02-2005 à 19:32:38    

Bonsoir à tous,
 
J'ai réorganisé ma BDD MySQL en faisant un : ALTER TABLE ma_table ORDER BY champ DESC.
 
Le champ "champ" est de type mediumint(7). Du coup, les plus "gros" nombre se situe au début de ma table, jusque là, tout est normal :)
 
Néanmoins, lorsque j'insère un nouvel enregistrement, quelque soit la valeur de son champ "champ", il se positionne en dernier dans la table (En dur aussi, tout à la fin du fichier BDD).
 
Je me demandais donc comment faire pour que, lors de chaque enregistrements, les valeurs de "champ" soit directement bien positionné ; et ce, sans passer par un autre ALTER TABLE qui reste une opération assez lourde sur une grosse BDD ;)
 
 
Merci à tous ;) :jap:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 25-02-2005 à 19:32:38   

Reply

Marsh Posté le 25-02-2005 à 19:57:22    

et pourquoi tu ne fais pas le tri dans la requête ?
Pour des raisons de performances ?

Reply

Marsh Posté le 25-02-2005 à 20:03:33    

Exactement ;)
La table contient 500 000 enregistrements ... Mon tri s'effectuerait sur des enregistrements disséminés un peu partout, donc une grosse perte de perfs :( (Même en utilisant des index bien placés)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 25-02-2005 à 20:16:26    

c'est chose tout à fait normal...
le language SQL à été conçu dans ce but... c'est lui qui gere les perfs... donc je ne pense pas que tu as a te soucié de cela... malheureusement, il tu n'as vraiment d'autre possibilités.

Reply

Marsh Posté le 25-02-2005 à 20:34:07    

Si tu dois souvent accéder aux enregistrements ayant les plus gros nombres, faudrait plutôt avoir une table contenant les références vers ces enregistrements, par exemple ... mais ça implique un mécanisme de maintenance de cette table.
 
En gros, on prépare les données (ce qui prend un petit peu de temps supplémentaire quand on insère dans la table), mais ensuite à l'exécution, c'est plus rapide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed