Un problème récurrent quand on requête une base de données : Comment obtenir la ligne la plus récente de chaque groupe ? Le problème n'est pas seulement d'obtenir la date en question, mais l'ensemble des données relatives à la ligne la plus récente. Pour répondre à ce problème il faut : 1. Identifier la colonne déterminant la notion temporelle Pour cela on aura généralement affaire à une colonne DATETIME. Attention, se référer ...
Mis à jour 15/03/2024 à 10h08 par Malick (Ajout balises code)
Une question du forum MySQL, « Comment obtenir le nombre de lignes d'une table le plus rapidement possible ? » Il est vrai que InnoDB n'est pas performant pour cet exercice, bien moins que MyISAM qui stockait le nombre de lignes en dur. Entre des tables à balayer ou des choix d'index hasardeux (faîtes un EXPLAIN pour voir ça), sur des tables volumineuses le résultat peut arriver en une fraction de secondes, ou plus d'une minute ! J'ai retenu 3 requêtes ...
J'intègre et traite de la data toute la journée. Pour cela un script PHP CLI tourne en permanence, et dès que du nouveau arrive, c'est inséré en base de données, transmis par e-mail, déposé sur un WebDAV ou un SFTP, historisé, archivé, etc. Une belle mécanique, mais soudainement bien fragile dès qu'une maintenance est nécessaire. Que se passe-t-il si le script est interrompu en pleine écriture d'un fichier ? Les fichiers risquent d'être corrompus, des transactions SQL sont à annuler, ...
Mis à jour 22/04/2023 à 14h30 par Séb.
mysql_config_editor est un gestionnaire de profils livré avec MySQL et facilitant la connexion aux différents outils de la suite MySQL. Exemple, pour se connecter au client de manière classique : Code : Sélectionner tout - Visualiser dans une fenêtre à part $ mysql --host=localhost --user=my_username --password=my_password Avec l'aide de mysql_config_editor et d'un profil my_profile_name préalablement créé : Code : Sélectionner tout - Visualiser dans une fenêtre à part 123$ mysql --login-path=my_profile_name mysql> select all user(); +-----------------------+ ...
$ mysql --host=localhost --user=my_username --password=my_password
$ mysql --login-path=my_profile_name mysql> select all user(); +-----------------------+
Mis à jour 29/03/2023 à 12h16 par Séb.
Nous sommes souvent amenés à grouper des lignes selon des métriques temporelles quotidiennes, hebdomadaires, mensuelles, etc. Moins souvent à l'heure, au quart d'heure, à la minute. Voici un moyen simple de procéder. Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part 1234567SET @slice = 60 * 60 * 2; -- Groupement sur combien de secondes ? Ici sur 2 heures SELECT ALL DATE(created_at) + INTERVAL TIME_TO_SEC(created_at) DIV @slice * @slice SECOND AS slice, COUNT(*) AS n FROM dataset GROUP BY ...
SET @slice = 60 * 60 * 2; -- Groupement sur combien de secondes ? Ici sur 2 heures SELECT ALL DATE(created_at) + INTERVAL TIME_TO_SEC(created_at) DIV @slice * @slice SECOND AS slice, COUNT(*) AS n FROM dataset GROUP BY