CrazyCat Programming Factory
rendre internet plus accessible
 

Optimiser une base de données MySQL

Logo sqlMySQL permet d'optimiser les tables d'une base de manière très simple, il suffit de lancer la requête suivante:
OPTIMIZE TABLE 'table1', 'table2', ..., 'tableN'


En tant que bon webmaster, vous désirez faire un script qui optimise automatiquement vos tables mais deux problèmes se posent:
* Vous ne voulez pas "coder en dur" toutes vos tables,
* Vous ne voulez optimiser que les tables qui en ont besoin.

Heureusement pour nous, MySQL peut vous informer sur la structure d'une base avec la requête suivante:
SHOW TABLE STATUS

Le retour de cette requête comporte deux champs qui nous intéressent au plus au point:
Name qui est le nom de la table
Data_free qui est l'espace pouvant être libéré.

Voici le script:
<?
// Vous êtes déjà connecté à votre base

// On initialise la requête d'optimisation
$sql_opt = "OPTIMIZE TABLE ";

//on recherche toutes les données des tables
$sql_status = "SHOW TABLE STATUS"
$req_status = mysql_query($sql_status);

while($t_status = mysql_fetch_array($req)) {
   if($t_status["Data_free"] > 0) {
   // Data_free est supérieur à 0, on peut optimiser la table
     $sql_opt .= "`".$t_status["Name"]."`, ";
   }
}
// le "substr" est utilisé pour supprimer le ", " final de la requête
$sql_opt = substr($sql_opt, 0, -2);
mysql_query($sql);
?>


Nota Bene: Les noms des tables sont protégés avec des "`" et non pas des "'".

©2006-2019 Geek Zone | eggdrop.fr | zeolia.net