У меня есть следующее, которое при запуске само по себе очень быстро, но когда я выполняю это для многих entity_id
, запросы начинают занимать больше времени и дольше (цикл - это PHP foreach), например, этот запрос принимает только 0,078, но один и тот же запрос на другой объект в цикле занимает до 2.1 секунды, . Кажется, что запросы медленнее и медленнее, чем больше объектов, помещенных в цикле. Почему это? и как я могу улучшить/оптимизировать запрос?оптимизация скорости запросов 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
}
У меня есть следующие структуры таблицы:
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;
Я добавил цикл PHP – Lizard 2010-12-07 09:52:31
Где $ entity_ids взялся? – 2010-12-07 09:53:26
Я сначала отобрал статьи из той же таблицы, которые соответствуют конкретным критериям (разные диапазоны дат), и возвратил его сущности – Lizard 2010-12-07 09:58:25