J'ai ce qui suit lorsqu'il est exécuté seul très rapidement, mais lorsque j'effectue cela pour beaucoup de entity_id
les requêtes commencent à prendre de plus en plus de temps (la boucle est un foreach PHP) par exemple cette requête ne prend que 0,078 mais la même requête sur une entité différente dans la boucle dure jusqu'à 2,1 secondes, les requêtes semblent ralentir et ralentir le nombre d'entités que je mets dans la boucle. Pourquoi est-ce? et comment puis-je améliorer/optimiser la requête?optimisation de la vitesse de requête mysql
foreach($entity_ids as $entity_id) {
SELECT COUNT(*) as prev, DATE_FORMAT(`created`, '%Y%m%d') AS date_group
FROM articles_entities
WHERE entity_id = '$entity_id'
AND `created` >= DATE_SUB(CURDATE(), INTERVAL 10 DAY)
GROUP BY date_group
// store result
}
je la structure de tableau suivant:
CREATE TABLE `articles_entities` (
`id` CHAR(36) NOT NULL,
`article_id` CHAR(36) NOT NULL,
`entity_id` CHAR(36) NOT NULL,
`created` DATETIME DEFAULT NULL,
`modified` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `article_id` (`article_id`),
KEY `entity_id` (`entity_id`),
KEY `created` (`created`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;
La seule chose qui manquait à la réponse était la sélection, entity_id AS alt_entity_id car je pouvais déterminer quelle entité appartenait à chacun (notez que je ne pouvais pas sélectionner simplement entity_id car cela donnait des résultats incorrects. Je dois également permuter les groupes, si vous mettez à jour votre réponse, je l'accepterai – Lizard
Heureux que ça aide, j'ai mis à jour ré :) – SW4