Ralentissement PC

INSERT, UPDATE, DELETE - Mysql

Liens commerciaux :

Voici la structure de la table membres que nous utiliserons pour ces exemples :

Table membres

ID

pseudo

passe

email

1

webmaster

password

mail@fai.fr

2

test

1234

test@essai.fr

3

Anthony

passe

anthony@fai.fr

Pour insérer des données dans cette table, il ne faut pas oublier que le champ ID est de type auto_increment. On n'a donc pas besoin d'insérer une valeur dans ce champ. Voici la requête qui va permettre d'insérer un nouveau membre, portant le pseudo "nouveau", le mot de passe "nvpass" et l'email "nouveau@fai.fr"

Exemple d'insertion de données :

mysql_query("INSERT INTO membres VALUES('','nouveau','nvpass','nouveau@fai.fr')");

C'est aussi simple que ça !

Modifications de données existantes :

Pour modifier des données qui existent déjà dans une table, on utilise une requête de type UPDATE. Nous souhaitons modifier dans la table membres l'email du membre "test" pour le remplacer par l'email suivant : anthony@fai.fr. Nous allons utiliser la requête suivante :

mysql_query("UPDATE membres SET email='anthony@fai.fr' WHERE pseudo='test'");

Si nous avions voulu modifier aussi son mot de passe (en même temps que son mail) et lui affecter la valeur zbdkdi par exemple, nous aurions procédé de la sorte :

mysql_query("UPDATE membres SET email='anthony@fai.fr' , passe='zbdkdi' WHERE pseudo='test'");

Suppression de données :

Imaginions que nous souhaitons supprimer le membre test. Nous allons pour ce faire utiliser la requête suivante :

mysql_query("DELETE FROM membres WHERE pseudo='test'");

Optimisation des requêtes d'écriture (INSERT, UPDATE, DELETE) :

Lorsque vous créez des index (pour optimiser les requêtes de lecture), les requêtes d'écriture sont ralenties (cependant inutile de supprimer les index). Quand vous faites plusieurs requêtes d'affilée sur la même table, à chaque requête l'index est rafraîchi, ce qui fait perdre des performances. On utilise alors la requête LOCK TABLES table WRITE / UNLOCK TABLES

Exemple :

mysql_query("LOCK TABLES membres WRITE");
mysql_query("UPDATE
membres SET passe='passe' WHERE pseudo='webmaster'");
mysql_query("DELETE FROM
membres WHERE pseudo='test'");
mysql_query("UNLOCK TABLES");

Dans notre exemple, les éventuels index ne sont rafraîchis qu'une seule fois, au lieu de 2 si nous avions omis "LOCK TABLES" / "UNLOCK TABLES". Le gain obtenu grâce à cette méthode peut être très important. N'utilisez pas cette méthode si vous ne faites qu'une requête d'insertion sur la même table, cela ralentirait le script.

Connaître le nombre de lignes qui ont été affectées par les modifications :

On utilise la fonction mysql_affected_rows();

Exemple :

mysql_query("DELETE FROM membres WHERE pseudo='test'");

echo
'nombre de lignes affectées par la suppression : '.mysql_affected_rows().' enregistrements';

A propos de cet article
Sondage

Utilisez-vous un firewall ?

(1 choix possible)

Aide informatique | Communauté d'entraide informatique | Aide informatique | Forum d'assistance informatique | Forum-Vista | Formation informatique | Forum Informatique | Devenir partenaire