
|
|
Auteur
|
Message
|
1
|
|
|
|
Bonjour,
Je voudrais savoir comment optimiser une base mysql ...
Je voudrais également savoir s'il existe une fonction pouvant réorganiser les champs id de ma table.
=> par exemple j'ai des enregistrements dans ma table, avec un champ id en auto_inrement (1,2,3,4,5) Je supprime un enregistrement, le 3 par exemple j'ai donc maintenant (1,2,4,5) est il possible de remettre tout ça en ordre de manière a avoir (1,2,3,4) ?
Merci,
|
|
Pom pom pom :o)
|
|
|
Salut a toi !
Optimiser est un tres joli mot, mais qui ne veut pas dire grand chose a l'etat brut ;). Tu veut optimiser tes requetes MySQL pour qu'elles soient plus rapides a executer? Tu veut optimiser ta base MySQL de facon a ce que'elle sois mieux organisée?
Pour ton 2eme soucis, je ne pense pas qu'il y est une fonction proprement dite qui fasse cela, cependant, avec PHP qui a des tonnes de resource, tu devrai pouvoir t'en sortir en executant une page faite par tes sois contenant grossierement :
-Une verification si tes enregistrement sont désorganisés au niveau de l'id (avec des requests MySQL suivit d'un petit if{}
-Si oui, tu met une petite boucle qui te remet tout ca dans l'ordre ;)
Voila, en esperant t'avoir aider... Ciao
Nitrotik
-
|
|
|
|
|
|
Oui, j'essayerai de faire ça ... merci pour l'idée
|
|
2008, ...
|
|
|
A quoi ce te sert de réorganiser tes ids ?
à part casser les liens entre tes tables ?
-------
[Chaque minute qui passe est une occasion de changer le cours de sa vie]
[Les préjugés sont les ennemis du bon sens]
|
|
Pom pom pom :o)
|
|
|
Ca peut servire a bien des choses, par exemple a cacher la supression d'un enregistrement
Ou bien ca permet le bon fonctionement des scripts qui atribue des données MySQL a chaque $i d'un for{}, ca n'afficheras pas rien pour $i = 3 si l'enregistrement n°3 a été suprimer de la bdd
|
|
ex-deus
|
|
|
Nitrotik a écrit :
Ca peut servire a bien des choses, par exemple a cacher la supression d'un enregistrement
Ou bien ca permet le bon fonctionement des scripts qui atribue des données MySQL a chaque $i d'un for{}, ca n'afficheras pas rien pour $i = 3 si l'enregistrement n°3 a été suprimer de la bdd ;)
ca a pas des sens de changer les id, a partir du moment du moment ou travaille avec n'importe quel sgdb qui gère les clés étrangères, d'ailleurs il t'emperchera de le faire.
|
|
2008, ...
|
|
|
Nitrotik a écrit :
Ca peut servire a bien des choses, par exemple a cacher la supression d'un enregistrement
Tu mélanges l'aspect fonctionnel et l'aspect technique
Nitrotik a écrit :
Ou bien ca permet le bon fonctionement des scripts qui atribue des données MySQL a chaque $i d'un for{}, ca n'afficheras pas rien pour $i = 3 si l'enregistrement n°3 a été suprimer de la bdd ;)
Déjà, si tu commences à parcourir les données extraites d'une base de donnée avec un for et une variable d'itération, ca commence mal.
-------
[Chaque minute qui passe est une occasion de changer le cours de sa vie]
[Les préjugés sont les ennemis du bon sens]
|
|
|
|
|
|
Vous tracassez pas, je voulai juste savoir si ça existait mé bon ya pas grand intéret, ça fait plus propre koi ...
|
|
est bon : Mangez en !
|
|
|
Pour les requetes, il est très utile de les optimiser avec les jointures (quand c'est utile), pour par exempleeviter de faire une requete dans un while($var = mysql_fetch_assoc($bla))
sinon, euh, il est interessant d'utiliser EXPLAIN ma requette, dans phpMyAdmin.
bon après l'optimisation vient au fil du temps, tu peux pas vraiment apprendre comment ça marche, c'est plutôt dans la logique de prog que c'est important.
|
|
|
|
|
Slt
je ne sais pas trop si c'est ça que tu voulais savoir, mais j'ai trouver un truc pour réorganiser une table mysql par id, cad dire supprimer les trou entre chaques entrées (au lieux de: 2-4-5-6-9-15-16 le tranformer en 1-2-3-4-5-6-7) bien sur ne pas utiliser quand vous avez des tables lier.
<?
$nomserveur='localhost'; //Nom du serveur
$nomutilisateur=''; //Ton identifiant Mysql
$pass=''; //ton pass
$nombd=''; //le nom de ta base de donnée
$nomtable=''; //Le nom de ta table.
$db = mysql_connect($nomserveur, $nomutilisateur, $pass);
mysql_select_db($nombd,$db);
$sql = 'ALTER TABLE `'.$nomtable.'` DROP `id`';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$sql = 'ALTER TABLE `'.$nomtable.'` ADD `id` MEDIUMINT(9) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
?>
ça consiste a supprimer le champ id dans un premier temps, pui le remettre...
c ki réorganise un bd.
-->Message édité par GostSn le 18/04/2006 20:11:25<--
|
|
|
|
|
Merci GostSn pour cette solution, c'est exactement ce que je cherchais !
-->Message édité par matperino le 04/03/2007 14:52:59<--
|
|
|
|
1
|
|

|


|