phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   MySQL  Optimisation


Optimisation des champs date de type TIMESTAMP[04-03-2001]
Posté par Olivier

Dans un soucis de faciliter le stockage et le traitement d'une date entre MySQL et PHP j'utilise le format INT car il y a une incompatibilité entre le TIMESTAMP MySQL et le TIMESTAMP Unix.

create table TOTO 
(
id_table tinyint....,
date_modif int,
)
  1. cela vous évitera tous les traitements de conversions :
    • de MySQL vers PHP lors des SELECT
    • de PHP vers MySQL lors des INSERT et UPDATE

  2. si vous avez besoin d'afficher la date en clair sous MySQL, vous pouvez faire la requête suivante en spécifiant ou non le FORMAT (voir doc... MySQL)
    select FROM_UNIXTIME(date_modif) from TOTO
    ou
    select FROM_UNIXTIME(date_modif,format) from TOTO
  3. l'autre avantage est que l'on puisse stocker une date antérieure au 1-1-1970, c'est à dire depuis le 14-12-1901 alors que c'est impossible avec le TIMESTAMP MySQL

  4. pour le traitement et l'affichage sous PHP il suffira d'utiliser les fonctions de base comme DATE... pour faire des tests...
    <?
    echo date('Y-m-d H:i:s', -2147483648)."<br>";
    echo date('Y-m-d H:i:s', 0)."<br>";
    echo date('Y-m-d H:i:s', 2147483647)."<br>";
    ?>


Compacter une base MySQL[18-09-2000]
Posté par Globus

Voici une fonction qui va vous permettre de compacter une base de données MySQL en optimisant chacune de ses tables. Dans le code, remplacer les paramètres de connexion pas vos propres valeurs.

<?
function Compacter() {

  if (
$connexion = mysql_connect("localhost", "root", "")) {

    
$tables = mysql_list_tables("base", $connexion);
    
$ok = true;

    while (
$enr = mysql_fetch_row($tables)) {
      
$sql = "OPTIMIZE TABLE ".$enr[0];
      if (!
mysql_query($sql, $connexion)) {
        
$ok = false;
      }
    }

    
mysql_close($connexion);

  } else {

    
$ok = false;

  }

  return
$ok;

}
?>


Débloquer les "grosses requêtes"[20-08-2000]

Des requêtes complexes sur des tables volumineuses provoquent parfois l'erreur "1114 (The table xxxxxx' is full)".

C'est le cas quand la taille de la table temporaire dépasse la valeur par défaut.
Pour pallier ce problème, vous avez 2 solutions.

1. Ajouter une ligne "big-tables" dans le fichier the "my.cnf".

2. Exécuter la requête : "SET SQL_BIG_TABLES = 1".

Synseo