Les performances de la base de données sont très importantes. Je pense que tout le monde le sait. Optimisons la base de données mysql sous quatre aspects !
1. Sélectionnez le champ le plus applicable Attributs
MySQL peut bien prendre en charge l'accès à de grandes quantités de données, mais d'une manière générale, plus la table de la base de données est petite, meilleure est l'exécution. . Les Requêtes seront plus rapides. Par conséquent, lors de la création d’un tableau, afin d’obtenir de meilleures performances, nous pouvons définir la largeur des champs du tableau aussi petite que possible. Par exemple, lors de la définition du champ du code postal, si vous le définissez sur CHAR(255), cela ajoutera évidemment de l'espace inutile à la base de données. Même l'utilisation du type VARCHAR est redondante, car CHAR(6) est une bonne mission accomplie. De même, si possible, nous devrions utiliser MEDIUMINT au lieu de BIGIN pour définir des champs entiers.
Une autre façon d'améliorer l'efficacité consiste à définir les champs sur NOT NULL lorsque cela est possible, afin que la base de données n'ait pas besoin de comparer les valeurs NULL lors de l'exécution de requêtes à l'avenir.
Pour certains champs de texte, comme « province » ou « sexe », nous pouvons les définir comme de type ENUM. Parce que dans MySQL, le type ENUM est traité comme des données numériques et les données numériques sont traitées beaucoup plus rapidement que les types texte. De cette façon, nous pouvons améliorer les performances de la base de données.
2. Utilisez des jointures (JOIN) au lieu de sous-requêtes (Sous-requêtes)
MySQL prend en charge les sous-requêtes SQL à partir de la version 4.1. Cette technique peut utiliser une instruction SELECT pour créer une seule colonne de résultats de requête, puis utiliser ce résultat comme condition de filtre dans une autre requête. Par exemple, si nous voulons supprimer les clients qui n'ont aucune commande dans la table d'informations client de base, nous pouvons utiliser une sous-requête pour récupérer d'abord les identifiants de tous les clients qui ont passé des commandes dans la table d'informations sur les ventes. , puis transmettez les résultats à la requête principale, comme suit :
DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
Utiliser la sous-requête pour tout faire en une seule fois. Il peut effectuer de nombreuses opérations SQL qui nécessitent logiquement plusieurs étapes. Il peut également éviter les verrous de transaction ou de table, et il est également facile à écrire. Cependant, dans certains cas, les sous-requêtes peuvent être remplacées par des jointures plus efficaces (JOIN). Par exemple, supposons que nous souhaitions extraire tous les utilisateurs qui n'ont pas d'enregistrement de commande, nous pouvons utiliser la requête suivante pour compléter :
SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo)
Si vous utilisez Connection (JOIN) .. compléter cette requête sera beaucoup plus rapide. Surtout s'il y a un index sur CustomerID dans la table salesinfo, les performances seront meilleures. La requête est la suivante :
SELECT * FROM customerinfo
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL
Join (JOIN).. La raison pour laquelle c'est plus efficace est que MySQL n'a pas besoin de créer une table temporaire en mémoire pour terminer cette étape logique .travail de requête.
3. Utilisez union (UNION) pour remplacer les tables temporaires créées manuellement.
MySQL prend en charge la requête UNION à partir de la version 4.0, qui peut combiner deux données ou plus nécessitant l'utilisation de requêtes SELECT de tables temporaires. sont combinés en une seule requête. À la fin de la session de requête du client, la table temporaire sera automatiquement supprimée pour garantir que la base de données est ordonnée et efficace. Lorsque vous utilisez UNION pour créer une requête, nous devons uniquement utiliser UNION comme mot-clé pour connecter plusieurs instructions SELECT. Il convient de noter que le nombre de champs dans toutes les instructions SELECT doit être le même. L'exemple suivant illustre une requête utilisant UNION.
SELECT Nom, Téléphone FROM client
UNION
SELECT Nom, NaissanceDate FROM auteur
UNION
SELECT Nom, Fournisseur FROM produit
4. Affaires
Bien que nous puissions utiliser des sous-requêtes, des jointures (JOIN) et des unions (UNION) pour créer une variété de requêtes, toutes les opérations de base de données ne peuvent pas être effectuées avec un seul ou quelques-uns. Instruction SQL. Le plus souvent, une série d’énoncés est nécessaire pour accomplir un certain type de travail. Mais dans ce cas, lorsqu'une certaine instruction de ce bloc d'instructions s'exécute de manière incorrecte, le fonctionnement de l'ensemble du bloc d'instructions deviendra incertain. Imaginez que vous souhaitiez insérer certaines données dans deux tables liées en même temps. Cela peut arriver : une fois la mise à jour réussie de la première table, une situation inattendue se produit dans la base de données, empêchant l'opération dans la deuxième table de se terminer. De cette façon, les données seront incomplètes et même les données de la base de données seront détruites. Pour éviter cette situation, vous devez utiliser des transactions. Sa fonction est la suivante : soit chaque instruction du bloc d'instructions réussit, soit elle échoue. En d’autres termes, la cohérence et l’intégrité des données de la base de données peuvent être maintenues. Les choses commencent par le mot-clé BEGIN et se terminent par le mot-clé COMMIT. Si une opération SQL échoue pendant cette période, la commande ROLLBACK peut restaurer la base de données à l'état avant le démarrage de BEGIN.
BEGIN;
INSERT INTO salesinfo SET CustomerID=14;
UPDATE stock SET Quantity=11
WHERE item='book';
COMMIT;
Un autre rôle important des transactions est que lorsque plusieurs utilisateurs utilisent la même source de données en même temps, ils peuvent utiliser la méthode de verrouillage de la base de données pour fournir aux utilisateurs une méthode d'accès sécurisée, qui peut garantir que les opérations de l'utilisateur ne sont pas bloqués.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!