Tengo lo siguiente que cuando se ejecuta por sí mismo es muy rápido, pero cuando estoy realizando esto para muchos entity_id
las consultas comienzan a tomar más y más (el ciclo es un foreach PHP) por ejemplo esta consulta solo toma 0.078 pero la misma consulta en una entidad diferente dentro del ciclo toma hasta 2.1 segundos, las consultas parecen volverse más y más lentas cuanto más entidades pongo en el ciclo. ¿Por qué es esto? y ¿cómo puedo mejorar/optimizar la consulta?optimización de la velocidad de consulta 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
}
que tienen la siguiente estructura de la tabla:
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;
Lo único que faltaba de la respuesta era seleccionar, entity_id AS alt_entity_id, ya que podía averiguar qué entidad era cada uno (nota que no pude seleccionar solo entity_id ya que dio resultados incorrectos. También tengo que cambiar las agrupaciones. Si actualizas tu respuesta, la aceptaré. – Lizard
Me alegro de que haya ayudado, he actualizado d :) – SW4