Administrateur PHPfrance |
3088 Messages
21 févr. 2006, 22:57
Désolé de te contredire zeus, mais je pense que tu fais erreur. OPTIMIZE "défragmente" les données de la table, et donc remplit les "trous". Il y a visiblement une erreur d'inattention dans la traduction française, voici la même phrase corrigée d'après la version anglaise: (modification visible en italique)
Vous pouvez vous servir de la commande OPTIMIZE TABLE pour récupérer l'espace inutilisé et défragmenter le fichier de données.
Mais comme l'a dit patami, il y a une erreur dans le code, et c'est certainement pour cela qu'il ne fonctionne pas.
Voici une version "corrigée" de ton code, BeRoots:
// on efface les lignes périmees de la table
$sql = "DELETE QUICK FROM table_manif WHERE manif_date < '$verif_date'";
mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on optimise la table
$sql = "OPTIMIZE TABLE table_manif";
mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
Dans cet exemple, je réutilise $sql car c'est une bonne pratique de garder le même nom pour ce genre de variables si tu n'as -bien entendu- pas besoin de récupérer la requête plus loin dans ton script, ce qui m'étonnerait. De plus, ces requêtes ne renvoient pas de résultat, donc inutile de le sauver dans $result. J'ai également remplacé $table par 'manif', car je doute que $table soit réellement dynamique, l'est-elle ?
En dernier, j'ai ajouté l'option QUICK de DELETE.
Pour les tables MyISAM, si vous spécifiez l'option QUICK, le moteur de stockage ne compacte pas les index durant l'effacement, ce qui peut accélérer certains effacements.
...çà tombe bien, OPTIMIZE les compacte et les trie juste après
