Maison > développement back-end > Problème PHP > Comment optimiser les requêtes floues en PHP

Comment optimiser les requêtes floues en PHP

PHPz
Libérer: 2023-04-04 21:26:01
original
659 Les gens l'ont consulté

PHP est un langage de script open source largement utilisé pour créer des applications Web dynamiques. Dans ces applications, des requêtes floues sont souvent utilisées, c'est-à-dire la recherche d'informations pertinentes à l'aide de mots-clés partiels. Cependant, étant donné que les requêtes floues impliquent une grande quantité de traitement de données et de calculs, l'optimisation de la méthode de requête est très critique lors de l'exécution de requêtes floues.

Ci-dessous, nous aborderons quelques méthodes d'optimisation pour optimiser les requêtes floues en PHP.

  1. Utiliser l'instruction LIKE

En PHP, l'utilisation de l'instruction LIKE est la méthode de requête floue la plus basique. Mais vous devez être prudent lorsque vous utilisez l'instruction LIKE car elle recherche une correspondance dans chaque colonne du tableau, ce qui peut rendre la requête très lente. Par conséquent, lorsque vous utilisez l'instruction LIKE, il est préférable de spécifier des noms de colonnes spécifiques.

Exemple :

SELECT * FROM users WHERE username LIKE '%john%';
Copier après la connexion

Remplacez par :

SELECT * FROM users WHERE username LIKE '%john%' OR email LIKE '%john%';
Copier après la connexion
  1. Ajustez finement vos mots-clés de recherche

Si vous souhaitez trouver des utilisateurs qui ont "john" dans leur nom d'utilisateur, "john" dans leur adresse e-mail et "john" dans leur adresse, l'utilisation de plusieurs instructions LIKE peut entraîner des requêtes plus lentes. Par conséquent, les mots-clés de recherche peuvent être affinés, ce qui entraîne des vitesses de requête plus rapides.

Exemple :

$search_term = 'john';
$sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%')";
Copier après la connexion
  1. Utilisation de la recherche en texte intégral de MySQL

MySQL fournit une fonction de recherche en texte intégral, qui est plus efficace que l'instruction LIKE. La recherche en texte intégral peut accélérer les requêtes en utilisant des index spécialisés. Pour utiliser la recherche en texte intégral MySQL, vous devez modifier le moteur dans lequel la table est stockée en MyISAM ou InnoDB et ajouter un index en texte intégral pour les colonnes que vous souhaitez rechercher.

Exemple :

ALTER TABLE users ADD FULLTEXT(username,email,address);
Copier après la connexion
SELECT * FROM users WHERE MATCH(username,email,address) AGAINST('john' IN BOOLEAN MODE);
Copier après la connexion
  1. Résultats de mise en cache

Si les résultats de la requête ne changent pas ou ne sont pas mis à jour fréquemment, ils peuvent être mis en cache pour accélérer la requête. Cette approche peut réduire considérablement le temps d’exécution, mais nécessite de veiller à ne pas mettre en cache les données expirées.

Exemple :

$search_term = 'john';
$result = apc_fetch($search_term);
if ($result === false) {
    $sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%')";
    $result = $db->query($sql);
    apc_store($search_term, $result);
}
Copier après la connexion
  1. Utilisation de la pagination

Si les résultats de la requête contiennent un grand nombre d'enregistrements, vous pouvez utiliser l'affichage de la pagination pour éviter une surcharge de données. Cette approche réduit le temps de traitement des données et améliore les performances. Pour utiliser la pagination, ajoutez simplement les clauses LIMIT et OFFSET à votre requête.

Exemple :

$search_term = 'john';
$page = 1;
$page_size = 10;
$offset = ($page - 1) * $page_size;
$sql = "SELECT * FROM users WHERE (username LIKE '{$search_term}%' OR email LIKE '{$search_term}%' OR address LIKE '{$search_term}%') LIMIT {$page_size} OFFSET {$offset}";
$result = $db->query($sql);
Copier après la connexion

Les méthodes ci-dessus peuvent vous aider à optimiser les requêtes floues en PHP. Bien qu’ils présentent chacun des avantages et des inconvénients, le choix doit être fait au cas par cas. Quelle que soit la méthode utilisée, les ajustements appropriés doivent être effectués en fonction de la situation réelle pour obtenir les meilleures performances.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal