Maison  >  Article  >  développement back-end  >  Comment optimiser les requêtes des champs calculés PHP et MySQL et des données JSON via des index ?

Comment optimiser les requêtes des champs calculés PHP et MySQL et des données JSON via des index ?

王林
王林original
2023-10-15 14:07:48888parcourir

Comment optimiser les requêtes des champs calculés PHP et MySQL et des données JSON via des index ?

Comment optimiser les requêtes des champs calculés PHP et MySQL et des données JSON via des index ?

Introduction : 
Dans le développement PHP et MySQL, les exigences de requête pour les champs calculés et les données JSON sont souvent impliquées. Cependant, étant donné que les deux types de requêtes entraînent une complexité de calcul et de traitement des données élevée, elles peuvent entraîner une dégradation des performances si elles ne sont pas optimisées. Cet article expliquera comment optimiser les champs calculés PHP et MySQL et les requêtes de données JSON via des index, et fournira des exemples de code spécifiques.

1. Optimiser la requête des champs calculés
Les champs calculés font référence aux résultats obtenus grâce à une certaine méthode de calcul, plutôt qu'aux champs lus directement à partir de la base de données. Dans le développement de PHP et MySQL, si la requête des champs calculés n'est pas optimisée, cela peut entraîner une dégradation des performances. Voici quelques façons d'optimiser les requêtes de champs calculés :

  1. Utilisez les fonctions stockées de MySQL
    MySQL fournit diverses fonctions stockées intégrées, telles que SUM, AVG, COUNT, etc. Ces fonctions peuvent calculer la valeur des champs directement dans la base de données, et il n'est pas nécessaire d'extraire toutes les données avant d'effectuer les calculs. Par exemple, pour calculer la somme d'un tableau vous pouvez utiliser la fonction SOMME au lieu d'utiliser un calcul en boucle en PHP. Cela peut réduire la quantité de transmission de données et améliorer l’efficacité des requêtes. Voici un exemple spécifique :
$query = "SELECT SUM(price) AS total_price FROM products";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
$total_price = $row['total_price'];
  1. Utilisation des champs calculés de MySQL
    MySQL vous permet de définir des champs calculés dans les instructions de requête, et vous pouvez directement obtenir les résultats de calcul requis via ces champs calculés. Cela peut confier le travail de calcul au moteur de base de données et réduire la charge du code PHP. Par exemple, pour calculer la somme et la moyenne d'un tableau, vous pouvez utiliser l'instruction suivante :
$query = "SELECT SUM(price) AS total_price, AVG(price) AS avg_price FROM products";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
$total_price = $row['total_price'];
$avg_price = $row['avg_price'];
  1. Utiliser la technologie de mise en cache
    Si la valeur du champ calculé ne change pas pendant un certain temps, vous pouvez envisager d'utiliser la mise en cache. technologie pour stocker les résultats des calculs. Lorsque le champ calculé doit être interrogé, vérifiez d'abord si la valeur existe dans le cache. Si elle existe, le résultat dans le cache sera renvoyé directement. Sinon, le calcul sera effectué et le résultat sera stocké dans le cache. Cela peut réduire le nombre de requêtes et améliorer l’efficacité des requêtes. Par exemple, utilisez memcached pour implémenter la mise en cache :
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$total_price = $memcache->get('total_price');
if (!$total_price) {
    $query = "SELECT SUM(price) AS total_price FROM products";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($result);
    $total_price = $row['total_price'];
    $memcache->set('total_price', $total_price, 0, 3600); // 缓存一小时
}

2. Optimiser la requête de données JSON
JSON (JavaScript Object Notation) est un format d'échange de données léger qui est souvent utilisé pour stocker et transmettre des données structurées. Dans le développement de PHP et MySQL, des opérations de requête fréquentes sur les données JSON peuvent entraîner une dégradation des performances. Voici quelques méthodes pour optimiser la requête de données JSON :

  1. Utilisez les fonctions JSON de MySQL
    MySQL version 5.7 et supérieure fournit une série de fonctions JSON, telles que JSON_EXTRACT, JSON_CONTAINS, etc., qui peuvent interroger et exploiter les données JSON directement dans la base de données. . Par exemple, pour interroger des données JSON contenant des paires clé-valeur spécifiques, vous pouvez utiliser la fonction JSON_CONTAINS :
$query = "SELECT * FROM products WHERE JSON_CONTAINS(details, '{"color": "red"}')";
$result = mysqli_query($conn, $query);
  1. Utilisation d'index
    Si vous devez interroger un certain champ des données JSON, vous pouvez créer un index pour le champ pour améliorer l’efficacité des requêtes. Par exemple, pour interroger un certain attribut dans les données JSON, vous pouvez utiliser la fonction JSON_EXTRACT pour interroger et indexer le champ :
$query = "SELECT * FROM products WHERE JSON_EXTRACT(details, '$.color') = 'red'";
$result = mysqli_query($conn, $query);
  1. Éviter les requêtes JSON imbriquées
    Si la structure des données JSON est profondément imbriquée, lors de l'interrogation de plusieurs niveaux des requêtes imbriquées peuvent se produire, affectant l'efficacité des requêtes. Afin d'améliorer les performances, vous pouvez essayer d'éviter de telles requêtes de structure imbriquée ou utiliser la fonction JSON de MySQL pour aplatir la structure imbriquée.

Résumé :
Grâce à la méthode ci-dessus, vous pouvez optimiser efficacement les opérations de requête des champs calculés PHP et MySQL et des données JSON. Grâce aux fonctions intégrées de MySQL, aux champs calculés, aux index et à d'autres technologies, le travail de calcul peut être transféré de PHP vers la base de données, réduisant ainsi la quantité de transmission de données et de calcul et améliorant l'efficacité des requêtes. Dans le même temps, l’utilisation de la technologie de mise en cache pour mettre en cache les résultats des calculs peut encore améliorer les performances des requêtes. Enfin, pour interroger des données JSON, vous pouvez utiliser les fonctions et index JSON de MySQL pour accélérer les opérations de requête.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn