Maison > base de données > tutoriel mysql > le corps du texte

Comment puis-je interroger efficacement une table MySQL avec un champ de tableau sérialisé pour rechercher des enregistrements contenant un élément spécifique ?

DDD
Libérer: 2024-11-08 16:06:02
original
864 Les gens l'ont consulté

How can I efficiently query a MySQL table with a serialized array field to find records containing a specific item?

Récupération de données à partir de tableaux sérialisés dans MySQL

Problème :

Vous souhaitez interroger un table de base de données où un champ contient un tableau sérialisé et sélectionnez uniquement les enregistrements contenant un élément spécifique du tableau. Plus précisément, vous devez trouver les enregistrements où « un élément de mon tableau » est égal à « $n ».

Solution :

Utiliser un tableau sérialisé pour une telle tâche est ce n'est pas une solution optimale, mais si vous ne parvenez pas à stocker les données différemment, vous pouvez utiliser le mécanisme de sérialisation de PHP pour effectuer la recherche.

Mise en œuvre :

  1. Comprendre le format de sérialisation de PHP : le tableau sérialisé est essentiellement une longue chaîne contenant des indicateurs numériques de différents types et longueurs de données.
  2. Créez une clause LIKE : utilisez la clause LIKE pour rechercher la représentation sérialisée de l'élément requis dans le tableau. Utilisez un opérateur générique '%...%' pour tenir compte de la nature dynamique de la chaîne sérialisée.
  3. Considérations relatives aux performances : gardez à l'esprit que l'utilisation de LIKE entraînera des analyses d'index, ce qui entraînera une dégradation significative des performances pour les fichiers complexes. tableaux.

Recommandation :

Comme mentionné par d'autres contributeurs, il est fortement conseillé d'envisager de stocker les données de manière normalisée si vous prévoyez des requêtes fréquentes basées sur sur le contenu du tableau. Cela améliorera considérablement les performances et la maintenabilité.

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