Maison >base de données >tutoriel mysql >Comment extraire efficacement les colonnes des enregistrements renvoyés par une fonction de base de données ?

Comment extraire efficacement les colonnes des enregistrements renvoyés par une fonction de base de données ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 16:25:11832parcourir

How to Efficiently Extract Columns from Records Returned by a Database Function?

Colonnes concaténées dans l'enregistrement renvoyées par la fonction

Lorsque vous joignez une table avec une fonction qui renvoie plusieurs colonnes, il est essentiel de prendre en compte les données potentielles problèmes de concaténation. Pour relever ce défi, explorons différentes approches pour extraire des colonnes individuelles de l'enregistrement renvoyé.

Approche générale pour la décomposition des lignes

Pour décomposer les lignes renvoyées par une fonction, utilisez la syntaxe suivante :

SELECT * FROM function_name(arguments);

Postgres 9.3 et versions ultérieures : utilisation de JOIN LATERAL pour décomposer les résultats

Pour Postgres 9.3 ou supérieur, vous pouvez utiliser JOIN LATERAL pour décomposer les résultats plus proprement :

SELECT ...
FROM table_name a
JOIN LATERAL function_name(a.accountid, '2014-08-12') f
WHERE ...

Postgres 9.2 ou version antérieure : décomposition des résultats Utilisation d'une sous-requête

Dans les versions antérieures de Postgres versions, vous pouvez décomposer les résultats à l'aide d'une sous-requête :

SELECT ...
FROM (
   SELECT a.*, function_name(a.accountid, '2014-08-12') AS rec
   FROM table_name a
   WHERE ...
) a

Bonnes pratiques pour décomposer les résultats

  • Décomposez l'enregistrement dans la requête externe pour éviter les répétitions évaluations de fonctions.
  • Faites attention aux noms de colonnes en double potentiels lors de la décomposition du record.
  • Pour de meilleures performances, utilisez NOT EXISTS au lieu de NOT IN (sous-requête) pour le filtrage des lignes.

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