Maison > base de données > tutoriel mysql > Comment sélectionner efficacement les enregistrements les plus récents dans MySQL en fonction de plusieurs dates ?

Comment sélectionner efficacement les enregistrements les plus récents dans MySQL en fonction de plusieurs dates ?

Patricia Arquette
Libérer: 2024-12-31 11:01:14
original
409 Les gens l'ont consulté

How to Efficiently Select the Most Recent Records in MySQL Based on Multiple Dates?

Sélection des enregistrements les plus récents d'une table MySQL en fonction de plusieurs dates

Dans une table MySQL stockant des données avec des horodatages, des méthodes, des identifiants, et réponses, l'objectif est de récupérer les enregistrements les plus récents pour chaque combinaison de méthode et d'identifiant.

Pour y parvenir, vous pouvez utiliser les éléments optimisés suivants query :

SELECT *
FROM (
    SELECT *,
    if(@last_method = method, 0, 1) AS new_method_group,
    @last_method := method
    FROM rpc_responses
    ORDER BY method, timestamp DESC
) AS t1
WHERE new_method_group = 1;
Copier après la connexion

Cette requête exploite les variables MySQL pour éviter le besoin d'une jointure. Il applique les étapes suivantes :

  1. Pour chaque ligne de la table rpc_responses, il attribue un nouveau groupe de méthodes afin d'identifier des groupes de méthodes distincts.
  2. Les lignes avec la même méthode appartiennent au même groupe.
  3. La dernière ligne d'horodatage au sein de chaque groupe de méthodes est sélectionnée en triant par méthode et horodatage en ordre décroissant order.
  4. La requête filtre les résultats pour inclure uniquement les lignes les plus récentes de chaque groupe de méthodes.

Cette approche récupère efficacement la réponse la plus récente pour chaque combinaison unique de méthodes. et ID sans avoir besoin d'une jointure, ce qui entraîne des performances optimales.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal